属性 | 说明 |
---|---|
longitude | 经度;必填 |
latitude | 纬度;必填 |
show-location | 显示带有方向的当前定位点 |
show-scale | 显示缩放标尺 |
show-compass | 显示罗盘 |
markers |
在地图上显示标记的位置;结合地图服务API - 地点搜索实现
latitude:标记经度; 必填
longitude:标记维度; 必填
iconPath:标记图片路径; 必填
id:标记id;number;注意是数字类型;每个标记的id应该不同; 必填
width:标记宽度;实际开发 必填
height:标记高度;实际开发 必填
label:标签;在标记下方显示信息;对象类型
callout:单击标记,在上方显示content信息,单击地图其它地方,信息消失;对象类型
|
bindtap | 单击地图,获取单击点经纬度信息 |
bindmarkertap | 单击地图标记,获取标记点id |
bindcallouttap | 单击标记的气泡触发 |
bindlabeltap | 单击标记的标签触发 |
属性 | callout | label |
---|---|---|
display | √:BYCLICK、ALWAYS、NEVER | × |
content | √ | √ |
color | √ | √ |
fontSize | √ | √ |
anchorX | √:marker 对应的经纬度 | √ |
anchorY | √:marker 对应的经纬度 | √ |
borderWidth | √ | √ |
borderColor | √ | √ |
borderRadius | √ | √ |
bgColor | √ | √ |
padding | √ | √ |
textAlign | √:left, right, center | √ |
分类:位置接口
获取当前的地理位置、速度
需要在 app.json 中进行声明;详情请查看 具体规则公告 、官方文档 - getLocation
默认 type 是 GPS,推荐使用 gcj02
只针对部分限定类目的小程序开放
需要开通权限:[开发] → [开发管理] → [接口设置]中自助开通
提示:增加调用频率限制
wx.getLocation({ type: 'gcj02', success: res => { console.log('getLocation ok', res); }, fail: err => console.log('getLocation fail', err) })
分类:位置接口
使用微信内置地图查看位置,并将指定的地点居中显示;通常用于在用户需要查看某个特定位置的详细地图和周边情况
如果不提供 latitude 和 longitude,地图将以用户当前位置为中心
wx.openLocation() 通常与 wx.getLocation() 或 wx.chooseLocation() 结合使用,先获取位置信息,然后使用这些信息打开地图
更多信息,请访问 官方文档 - openLocation
分类:位置接口
打开地图选择位置
更多信息,请访问 官方文档 - chooseLocation
chooseLoc() { wx.chooseLocation({ success: res => { console.log('chooseLocation ok', res); }, fail: err => console.log('chooseLocation fail', err) }) }
分类:位置接口
打开POI列表选择位置
更多信息,请访问 官方文档 - choosePoi
choosePoi() { wx.choosePoi({ success: res => { console.log('choose poi ok', res); }, fail: err => console.log('choose poi fail', err) }) }
choosePoi:fail 开发者工具暂时不支持此 API 调试,请使用真机进行开发
分类:开放接口
获取用户收货地址。调起用户编辑收货地址原生界面,并在编辑完成后返回用户选择的地址
更多信息,请访问 官方文档 - chooseAddress
chooseAddr() { wx.chooseAddress({ success: res => console.log('chooseAddress ok', res), fail: err => console.log('chooseAddress fail', err) }) }
将地图中心移置当前定位点;地图组件 需 设置 show-location 为true
经纬度非必须
在地图上添加标记
获取当前地图中心的经纬度;返回 gcj02 坐标系,可以用于 wx.openLocation()
根据需要的具体业务指定
"requiredPrivateInfos":[ "getLocation", "chooseLocation", "choosePoi", "chooseAddress" ]
非必须 - 具体视版本而定;系统通过弹窗提示是否授权
"permission": { "scope.userLocation": { "desc": "你的位置信息将用于小程序位置接口的效果展示" } }
<map class="map" id="map" longitude="{{longitude}}" latitude="{{latitude}}" show-location show-scale show-compass bindtap='getMapInfo' bindmarkertap="getMarker" bindlabeltap="getLabel" bindcallouttap="getCallout" bindregionchange="changeRegion"/> <image class="img" src="../../utils/center.png" mode="aspectFill" bind:tap="moveToLocation" />
map{ width: 100vw; height: 100vh; } .img { position: fixed; bottom: 20px; left: 20px; width: 30px; height: 30px; }
mapCtx = wx.createMapContext('map')
data: { longitude: '', latitude: '', markers: [] }
wx.getLocation({ type: 'gcj02', success: res => { console.log(res); this.setData({ latitude: res.latitude, longitude: res.longitude }) } })
addCenterMarkers(lati, long) { let markers = this.data.markers let ind = markers.length let marker = { id: ind, latitude: lati, longitude: long, iconPath: '../../utils/marker.png', width: 32, height: 32, callout: { content: 'top', color: '#ff4400', textAlign: 'cneter', display: 'BYCLICK' }, label: { content: 'center', color: '#ff4400', textAlign: 'cneter' } } markers.push(marker) this.setData({ markers }) }
moveToLocation() { mapCtx.moveToLocation({ longitude: this.data.longitude, latitude: this.data.latitude }) }
changeRegion(e) { console.log('moving', e); }
getMapInfo(e) { console.log(e); wx.showToast({ title: 'map tapped', }) // 每次单击地图时,增加一个 markers this.addCenterMarkers(e.detail.latitude, e.detail.longitude) }, getMarker(e) { console.log('marker tap', e); wx.showToast({ title: 'marker tapped', }) }, getLabel(e) { console.log('label tap', e); wx.showToast({ title: 'label tapped', }) }, getCallout(e) { console.log('callout tap', e); wx.showToast({ title: 'callout tapped', }) }