Tencent / kbone

一个致力于微信小程序和 Web 端同构的解决方案
Other
4.8k stars 457 forks source link

使用moveToLocation方法问题 #456

Closed slowlow79464 closed 1 year ago

slowlow79464 commented 1 year ago

调用MapContext的moveToLocation方法时毫无反应,,。不知道是哪里除了问题,,。 同样的实现在小程序上可以直接使用。

kbone代码

<template>
  <div class="root">
    <wx-map 
      id="myMap"
      class="map" 
      show-location="true"
    ></wx-map>
    <button @click="moveToLocation">移动位置</button>
  </div>
</template>

<script>
import Vue from 'vue'

export default Vue.extend({
  name: 'MainMap',

  methods: {
    moveToLocation(){
      let mapCtx = wx.createMapContext('myMap')
      mapCtx.moveToLocation()
      console.log("moveToLocation")
    }
  }
})
</script>

<style lang="less">

.root{
  height: 100%;
}

.map{
  height: 600px;
  width: 100%;
}

</style>

小程序代码: index.wxml

<view style="height: 100%;">
  <map
    id="myMap"
    style=" width: 100%; height: 600rpx; "
    show-location="true"
  >
  </map>
  <button bindtap="moveToLocation" type="primary">移动位置</button>
</view>

index.js

Page({
  moveToLocation: function () {
    let mapCtx = wx.createMapContext('myMap')
    mapCtx.moveToLocation()
  },
})
JimmyVV commented 1 year ago

已经收到哦~~~~

JuneAndGreen commented 1 year ago

可能没有获取到正确的 context(即 context 没有正确 bind 到 map 组件上),建议通过 kbone 提供的扩展方法来获取 context:

https://wechat-miniprogram.github.io/kbone/docs/domextend/#dom-getcontext

slowlow79464 commented 1 year ago

可以了!!! 谢谢大佬

let mapCtx = document.querySelector('#myMap').$$getContext().then(context=>{
        context.moveToLocation()
      })
JuneAndGreen commented 1 year ago

你用 vue 的话,也可以用 ref 拿 dom 节点,可能在某些场景会更方便些

slowlow79464 commented 1 year ago

好的,感谢~