微信小程序学习之路——API位置

位置

获取位置

在国际上,坐标体系有多套标准,小程序支持WGS84标准和GCJ02标准,WGS84是地球坐标,国际上通用的坐标系。设备一般包含的GPS芯片或者北斗芯片所获取的经纬度是WGS84地理做白哦西。GCJ02坐标系为火星坐标系,是由中国国家测绘局指定的地理信息系统的坐标系统,它是由WGS84坐标系加密后的坐标系,它是在小程序中,查看位置需要使用GCJ02标准坐标。

wx.getLocation(Object)

用于获取当前的地理位置、速度,需要用户授权定位功能,当用户离开小程序后,该接口无法调用,当用户点击“显示在聊天顶部”时,此接口才可继续调用,Object参数属性如下:

属性 类型 默认值 必填 说明 最低版本
type string wgs84 wgs84 返回 gps 坐标,gcj02 返回可用于 wx.openLocation 的坐标  
altitude string false 传入 true 会返回高度信息,由于获取高度需要较高精确度,会减慢接口返回速度 1.6.0
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-Context对象方法如下:

方法 参数 说明 最低版本
getCenterLocation OBJECT 获取当前地图中心的经纬度,返回的是 gcj02 坐标系,可以用于 wx.openLocation  
moveToLocation 将地图中心移动到当前定位点,需要配合map组件的show-location使用  
translateMarker OBJECT 平移marker,带动画 1.2.0
includePoints OBJECT 缩放视野展示所有经纬度 1.2.0
getRegion OBJECT 获取当前地图的视野范围 1.4.0
getScale OBJECT 获取当前地图的缩放级别 1.4.0

示例代码如下:



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();
    }
  }
});

 

你可能感兴趣的:(微信小程序)