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

位置

获取位置

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

wx.getLocation(Object)

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

属性类型默认值必填说明最低版本
typestringwgs84wgs84 返回 gps 坐标,gcj02 返回可用于 wx.openLocation 的坐标 
altitudestringfalse传入 true 会返回高度信息,由于获取高度需要较高精确度,会减慢接口返回速度1.6.0
successfunction 接口调用成功的回调函数 
failfunction 接口调用失败的回调函数 
completefunction 接口调用结束的回调函数(调用成功、失败都会执行)

示例代码如下:

wx.getLocation({
  type:'wgs84',
  success: function(res) {
    console.log(res);
  },
})

选择位置

wx.chooseLocation(Object)

用于打开地图选择位置,用户选择后返回选中信息,Object参数属性如下:

属性类型默认值必填说明
successfunction 接口调用成功的回调函数
failfunction 接口调用失败的回调函数
completefunction 接口调用结束的回调函数(调用成功、失败都会执行)

示例代码如下:

wx.chooseLocation({
  success: function(res) {
    console.log(res.address);
  },
})

查看位置

wx.openLocation(Object)

用于在微信内置地图查看位置,Object参数属性如下:

属性类型默认值必填说明
latitudenumber 纬度,范围为-90~90,负数表示南纬。使用 gcj02 国测局坐标系
longitudenumber 经度,范围为-180~180,负数表示西经。使用 gcj02 国测局坐标系
scalenumber18缩放比例,范围5~18
namestring 位置名
addressstring 地址的详细说明
successfunction 接口调用成功的回调函数
failfunction 接口调用失败的回调函数
completefunction 接口调用结束的回调函数(调用成功、失败都会执行)

示例代码如下:

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对象方法如下:

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

示例代码如下:

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

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值