微信小程序定位踩过的坑和总结

公司最近在做骑行小程序项目开发,要求记录骑行轨迹、里程、时长,踩过不少坑,特别在此纪录,这里只是记录我踩过的一些坑。

  1. map组件上view无法浮动

这个对于刚开始做项目的人是很疑惑的,后来经过查找原来是map组件在小程序中属于原生组件,原生组件上面只能设置微信小程序指定的组件cover-view或者cover-image;

  • 使用GCJ02(火星坐标)比WGS84(GPS)的坐标在计算距离的时候更为精确。

计算距离的方法:

//计算两点间距离

function getDistance(lat1, lng1, lat2, lng2) { 

  var dis = 0;

  var radLat1 = toRadians(lat1);

  var radLat2 = toRadians(lat2);

  var deltaLat = radLat1 – radLat2;

  var deltaLng = toRadians(lng1) – toRadians(lng2);

  var dis = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(deltaLat / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(deltaLng / 2), 2)));

  return dis nbsp;* 6378137;

  function toRadians(d) {  return d * Math.PI / 180;}

  • 安卓机器,wx.onLocationChange 在后台情况下,打开了持续定位。定位会被通话、微信语音、微信视频终止,并且通话完不会继续定位。

微信小程序wx.onLocationChange方法有新属性了

今天测试,能取到的属性参数比官方文档多了几个,对于开发运动轨迹记录类型的APP还是有很大帮助的,新的属性如下:

accuracy: 30
altitude: 0
direction: 0
horizontalAccuracy: 30
indoorLocationType: -1
latitude: 25.064581434461804
longitude: 102.66253662109375
provider: “network”
speed: 0
steps: 0
verticalAccuracy: 0

官方文档里提供的属性只有这些

新增加了两个关键属性

provider属性:坐标来源,会有network和gps两种值,应该表示当前坐标是靠手机gps取到的还是运营商网络(基站)取到的,一般情况gps 的精确度更好,可以做高精度功能

indoorLocationType属性:应该是代表坐标是否是在室内取到的,导航软件集成提示gps信号弱,请在户外空旷地方使用,就可以用这个属性来判断实现,不过好像还没有正式启用,取到的值还不准确,一直都是-1

最近在开发一个骑行小程序,主要就是用到wx.onLocationChange方法,刚好记录一下