微信小程序地图返回当前位置map,

功能:点击右下角图标,地图中心点返回当前定位,且缩放为初始缩放值

需要解决的问题:

1、地图上下左右拖动后,点击右下角图标返回当前定位的位置

2、地图缩放大小后,点击右下角图标能返回初始化设置的缩放值

思路:

下面是wxml页面相关代码:

只截取部分核心代码 ↓ ,css根据布局需求更改即可

<!--wxml页面代码 已授权获取位置-->
<map id="map"
  style="width:100%;height:100%;"
  longitude="{{currentLo}}"
  latitude="{{currentLa}}"
  scale="{{scale}}"
  markers="{{markers}}"
  show-location
  bindtap='mapTap'
  bindmarkertap="markerTap"
  bindregionchange="regionChange"
>
  <cover-view class="cover-view" bindtap="controltap">
    <cover-image class="station" src="https://linli-oss.vecommunity.com/xchx/icon/position.jpg"></cover-image>
  </cover-view>
</map>

js部分↓ 

regionChange(e) {
  // 获取地图
  let mpCtx = wx.createMapContext('map')

  // 判断是缩放,打印一下e,就能看到缩放值。注意:需真机测试
  if (e.type == "end" && e.causedBy == "scale") {
    // 如果是缩放,获取房钱缩放值,并修改data中的scale属性(此处很关键)
    mpCtx.getScale({
      success: function(res){
        if (res.scale != this.data.scale) {
          // 如果缩放了 = 现在的缩放值和初始值不一样时,修改data中的scale值
          this.setData({
            scale: res.scale
          })
        }
      }
    })
  }
},

设置缩放值这一步很重要

如果这里不进行缩放值设置,在后面点击右下角图标的时候,地图的缩放级别将不会改变。

原因是:data中scale:13,缩放地图之后,虽然视觉上有变化,但data中的scale数据没有变化。导致点击右下角图标时候,地图视觉上没有任何变化。

切记:视图根据数据变化

注意:缩放要用真机测试 / 真机联调测试,开发者工具可能没有效果 

// 右下角图标绑定的事件:点击右下角图标触发
controltap(e) {
  // 创建 map 上下文 MapContext 对象。建议使用 wx.createSelectorQuery 获取 context 对象
  // 获取地图,map要与wxml页面的id名一致。注意:不需要#符号
  let mpCtx = wx.createMapContext('map')
  
  // 将地图中心移置当前定位点,此时需设置地图组件 show-location 为true。'2.8.0' 起支持将地图中心移动到指定位置。
  mpCtx.moveToLocation()

  // 将地图缩放值改为初始值
  this.setData({
    scale: 13
  })
}

 

 具体属性含义请参考官方API:https://developers.weixin.qq.com/miniprogram/dev/component/map.html

 

 

 

 

 

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
要获取微信小程序当前位置的详细信息,你使用微信小程序提供的`wx.getLocation接口获取经纬度,然后使用地理逆编码服务将经度转换为详细地址信息。以下是示例代码: ```javascript // 在小程序的页面中调用获取位置的方法 wx.getLocation({ type: 'wgs84', // 返回经纬度信息的类型,这里使用wgs84 success: function(res) { var latitude = res.latitude; // 纬度 var longitude = res.longitude; // 经度 // 调用腾讯地图的逆地址解析接口,将经纬度转换为详细地址 wx.request({ url: 'https://apis.map.qq.com/ws/geocoder/v1', data: { location: latitude + ',' + longitude, key: 'your_tencent_map_api_key', get_poi: 1 }, success: function(res) { var address = res.data.result.address; // 详细地址信息 var pois = res.data.result.pois; // 附近的POI信息 // 在这里处理获取到的位置信息 console.log("详细地址:" + address); console.log("附近POI:" + JSON.stringify(pois)); }, fail: function(res) { // 处理失败情况 console.log("逆地址解析失败:" + res.errMsg); } }); }, fail: function(res) { // 处理失败情况 console.log("获取位置失败:" + res.errMsg); } }); ``` 在成功回调函数中,我们发送了一个HTTP请求给腾讯地图的逆地址解析接口,将获取到的经纬度信息传递给接口,同时提供你的腾讯地图API密钥。接口会返回详细的地址信息和附近的POI(兴趣点)信息。你可以根据需求处理这些信息。 请注意,为了使用腾讯地图的服务,你需要在小程序后台设置中申请并获取到腾讯地图API密钥,并将其替换到示例代码中的`your_tencent_map_api_key`处。 希望对你有所帮助!如果还有其他问题,请随时提问。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值