微信小程序Map地图使用详细教程,获取小程序定位,设置初始位置,设置地图初始缩放程度scale,最大,最小min-scale缩放,地图标点markers,画区域轮廓polygons,绑定地图点击事件

在页面中引入Map组件

<map
      id="myMap"
      style="width: 100%; height: 510rpx;"
      latitude="{{latitude}}"
      longitude="{{longitude}}"
      bindtap="maptap"
      bindregionchange="bindregionchange"
      bindpoitap="maptap"
      enable-zoom="{{true}}"
      scale="{{scale}}"
      min-scale="4"
      markers="{{markers}}"
      polygons="{{polygon}}"
    >
    </map>

参数

核心: latitude,longitude表示当前显示的位置坐标,bindtap绑定地图的点击事件,bindregionchange监听地图视野变化,bindpoitap点击地图poi点时触发(处理点击地图上的某些图标或者轮廓线不触发点击事件问题),enable-zoom是否支持缩放,scale缩放等级(3~20),min-scale 、max-scale最小最大缩放等级,markers地图标点集合,polygons地图上画范围(轮廓)的集合

其他的一些参数,参考微信小程序开发文档Map

获取当前定位

1、去微信公众平台,开发-开发管理-接口设置,开通wx.getFuzzyLocation获取位置接口使用权限

2、在app.json文件中配置scope.userFuzzyLocation

	"permission":{
		"scope.userInfo":{
			"desc": "你的信息将用于小程序平台用户登录"
		},
		"scope.userFuzzyLocation": {
			"desc": "你的位置信息将用于小程序为您匹配最近的机构"
		}
     },

3、页面中使用

 // 获取当前定位
  getLocation(){
    let that = this
    wx.getFuzzyLocation({
      type: 'wgs84',
      success (res) {
        // 当前位置坐标
        const latitude = res.latitude;
        const longitude = res.longitude;
      },
      fail(err) {

      },
    })
  },

markers地图标点

markers是一个数组,可以添加一个或多个标点,数组每一项对象参数具体如下:

参数:

例如:
let obj = {
  id: 12345,
  latitude:that.data.latitude,
  longitude:that.data.longitude,
  width:30,
  height:44,
  alpha:1,
  zIndex: 6,
  callout:{
    content:`${str}(${res.data.data})`,
    display:'ALWAYS',
    padding:5,
    borderRadius:6,
    color:'#ff0000'
  }
}
this.setData({
    markers:[obj]
})
效果:

polygons地图范围画圈

polygons是一个数组,可以画一个或多个范围封闭的范围,数组每一项对象参数具体如下,其中核心就是points,是一个由一组组坐标组成的数组集合,points里的坐标点连线组成了一个封闭的区域范围:

参数:

例如:

其中p就是地图坐标点集合

arr.push({
  points: p,
  fillColor: "#4F94CD33",
  strokeColor: "#2196f3",
  strokeWidth: 2,
  zIndex: 5,
  dashArray:[5,5]
})

this.setData({
  polygon:arr
})
效果:

一个:

多个:

抱歉,由于您的问题涉及到技术实现,我可以回答。以下是一个简单的示例代码,可以实现微信小程序使用腾讯地图展示点位,并在点击点位时弹出弹框: 1. 在微信小程序中引入腾讯地图 API: ```javascript // index.js const QQMapWX = require('../../libs/qqmap-wx-jssdk.min.js'); // 引入腾讯地图API Page({ onReady: function () { // 初始化腾讯地图API this.mapCtx = wx.createMapContext('myMap'); this.mapSdk = new QQMapWX({ key: '你的腾讯地图Key' }); }, // 点击地图上的点位 onMarkerTap: function (e) { // 获取点击的点位的id const markerId = e.markerId; // 获取点击的点位的信息 this.mapSdk.searchById({ id: markerId, success: (res) => { // 在屏幕底部弹出弹框 wx.showModal({ title: res.name, content: res.address, showCancel: false }) } }) } }) ``` 2. 在小程序页面中添加地图组件,并在地图区域内添加点位: ```xml <!-- index.wxml --> <view class="map-wrapper"> <map id="myMap" show-location scale="{{scale}}" markers="{{markers}}" bindmarkertap="onMarkerTap"></map> </view> ``` ```javascript // index.js Page({ data: { // 地图缩放比例 scale: 16, // 地图上的点位 markers: [ { id: 1, latitude: 30.670609, longitude: 104.071904, name: '成都市', address: '四川省成都市武侯区天府软件园E区' }, { id: 2, latitude: 31.229696, longitude: 121.476476, name: '上海市', address: '上海市浦东新区金科路弘颐广场' } ] } }) ``` 以上代码仅为参考,具体实现还需要根据自己的需求进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值