1. 背景
工作需要, 一个web的项目嵌入到微信小程序web-view里面使用, 其中用到了微信的定位接口 wx.getLocation.
2. 遇到的问题
a. 使用微信的JSSDK中的getLocation方法
存在定位不准, 某些android手机上定位异常的问题, 所以废弃了.
b. 使用微信小程序自身的getLocation方法
仍然存在定位不准, 定位慢的问题...后来发现, 在web-view所在的小程序页面中, 隐藏一个微信自己的map控件, 定位速度大大提高, 并且准确性也比较高(WTF???)
但是, 后来遇到这个问题, 导致彻底放弃用微信的定位了(太TMD坑了...):
安卓wx.getLocation用数据流量经常获取不到位置
c. 直接使用浏览器的定位
最终的做法, 竟然是直接使用浏览器自身的定位完成的
获取定位
浏览器定位的方法, 在android手机上直接可以使用, 但是由于IOS手机安全性的问题, 只能基于https才给定位所以把网站改成https方式.
另外一个问题就是, 由于我们在https网站中, 加载的Openlayer地图是http协议的, 导致在IOS下, 要么不能显示地图, 要么无法定位...最终的解决方法是: 父页面是HTTPS的, 父页面中加载HTTP协议地址的Openlayer地图, 定位的代码放在父页面的一个隐藏iframe中, 通过JS向父页面传递定位信息...最终问题解决.
具体请参考:
解决window.navigator.geolocation.getCurrentPosition在IOS10系统中无法进行地理定位问题