h5实现定位之前一直以为只能依赖iOS和Android原生的能力,这次工作上刚好有这个需求,就想折腾下不依赖原生能力能否实现移动端的定位。
在pc上实现定位,在手机上运行时,都会报无法获取位置信息的错误。后来发现腾讯地图居然可以完全不依赖原生实现手机定位,算是一个意外的收获,不用和原生交互省了很多事情。功能开发完成上线了,关键代码贴在这里记录一下:
<!--引入腾讯地图定位能力-->
<script type="text/javascript" src="https://3gimg.qq.com/lightmap/components/geolocation/geolocation.min.js"></script>
<script>
var geolocation = new qq.maps.Geolocation("OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77", "myapp");
var options = {timeout: 8000};
function showPosition(position) {
alert('定位成功');
//position即为获取的定位信息的对象
};
function showErr() {
alert('定位失败');
};
//获取位置信息
geolocation.getLocation(showPosition, showErr, options);
</script>
但是在测试过程中还碰到一些问题,相同定位代码的html页面,在Android手机里qq、微信和大部分浏览器里都能精准定位,但是在部分手机自带浏览器和简单的一个Android webview demo里只能粗糙定位,定位到市政府或者区政府。
考虑到是不是webview的环境问题,我在webview中注入腾讯X5内核,结果还是不能精确定位,现在暂时还没有解决这个问题。