位置
获取位置
在国际上,坐标体系有多套标准,小程序支持WGS84标准和GCJ02标准,WGS84是地球坐标,国际上通用的坐标系。设备一般包含的GPS芯片或者北斗芯片所获取的经纬度是WGS84地理做白哦西。GCJ02坐标系为火星坐标系,是由中国国家测绘局指定的地理信息系统的坐标系统,它是由WGS84坐标系加密后的坐标系,它是在小程序中,查看位置需要使用GCJ02标准坐标。
wx.getLocation(Object)
用于获取当前的地理位置、速度,需要用户授权定位功能,当用户离开小程序后,该接口无法调用,当用户点击“显示在聊天顶部”时,此接口才可继续调用,Object参数属性如下:
属性 | 类型 | 默认值 | 必填 | 说明 | 最低版本 |
type | string | wgs84 | 否 | wgs84 返回 gps 坐标,gcj02 返回可用于 wx.openLocation 的坐标 | |
altitude | string | false | 否 | 传入 true 会返回高度信息,由于获取高度需要较高精确度,会减慢接口返回速度 | |
success | function | | 否 | 接口调用成功的回调函数 | |
fail | function | | 否 | 接口调用失败的回调函数 | |
complete | function | | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
示例代码如下:
wx.getLocation({
type:'wgs84',
success: function(res) {
console.log(res);
},
})
选择位置
wx.chooseLocation(Object)
用于打开地图选择位置,用户选择后返回选中信息,Object参数属性如下:
属性 | 类型 | 默认值 | 必填 | 说明 |
success | function | | 否 | 接口调用成功的回调函数 |
fail | function | | 否 | 接口调用失败的回调函数 |
complete | function | | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
示例代码如下:
wx.chooseLocation({
success: function(res) {
console.log(res.address);
},
})
查看位置
wx.openLocation(Object)
用于在微信内置地图查看位置,Object参数属性如下:
属性 | 类型 | 默认值 | 必填 | 说明 |
latitude | number | | 是 | 纬度,范围为-90~90,负数表示南纬。使用 gcj02 国测局坐标系 |
longitude | number | | 是 | 经度,范围为-180~180,负数表示西经。使用 gcj02 国测局坐标系 |
scale | number | 18 | 否 | 缩放比例,范围5~18 |
name | string | | 否 | 位置名 |
address | string | | 否 | 地址的详细说明 |
success | function | | 否 | 接口调用成功的回调函数 |
fail | function | | 否 | 接口调用失败的回调函数 |
complete | function | | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
示例代码如下:
wx.getLocation({
type:'gcj02',//返回可用于wx.openLocation的经纬度
success: function(res) {
wx.open({
//显示当前地址
latitude:res.latitude,
longitude:res.longitude
})
},
})
地图组件控制
wx.createMapContent(Object)
用于创建并返回map上下文mapContent对象,map-Context通过mapId跟一个<map/>组件绑定,通过它可以操作对应的<map/>组件,map-Context对象方法如下:
方法 | 参数 | 说明 | 最低版本 |
getCenterLocation | OBJECT | 获取当前地图中心的经纬度,返回的是 gcj02 坐标系,可以用于 wx.openLocation | |
moveToLocation | 无 | 将地图中心移动到当前定位点,需要配合map组件的show-location使用 | |
translateMarker | OBJECT | 平移marker,带动画 | |
includePoints | OBJECT | 缩放视野展示所有经纬度 | |
getRegion | OBJECT | 获取当前地图的视野范围 | |
getScale | OBJECT | 获取当前地图的缩放级别 |
示例代码如下:
<map id="myMap" show-location/>
<button data-type='getCenterLocation' bindtap='action'>获取位置</button>
<button data-type="location" bindtap="action">移动位置</button>
Page({
onReady:function(e){
this.mapContext = wx.createMapContext('myMap');
},
action:function(e){
var type = e.target.dataset.type,
mapContext =this.mapContext;
switch(type){
//获取当前地图中心维度
case 'getCenterLocation':
mapContext.getCenterLocation({
success:function(res){
console.log(res.longitude+','+res.latitude);
}
});
//定位到当前位置
case 'location':
mapContext.moveToLocation();
}
}
});