mui:使用js在移动端进行精准定位改进版,以及坐标转换

来源:互联网 发布:朴槿惠 邪教 知乎 编辑:程序博客网 时间:2024/05/17 09:05

我们以android端为案例谈,最初时我直接调用百度地图第三方库,然后直接就定位,这样的话,只可以定位到城市一级,比较伤,无法精确定位,于是就要改变
之后尝试使用html5的地理定位,如此的话,发现只有在开启GPS时,才会获取到定位信息,这样获得的信息是精确的,这样做:

//初始化地图

mui.plusReady(function() {        getInfo();        map = new BMap.Map("allmap");        var point = new BMap.Point(116.331398, 39.897445);        map.centerAndZoom(point, 13);           getGeocode();     })

//进行定位

// 通过定位模块获取位置信息    function getGeocode() {         plus.nativeUI.showWaiting();        plus.geolocation.getCurrentPosition(showLocation, function(e) {            mui.toast("获取定位位置信息失败:" + e.message);        }, {            geocode: true        });    }

处理定位信息:

    //处理定位后的信息    function showLocation(r) {          jingDu = r.coords.longitude;        weiDu = r.coords.latitude;         Address = r.addresses;         centerPointer = new BMap.Point(r.coords.longitude,r.coords.latitude);        exchange();     }

这有一点,地图我没有采用应用内置的地图,而是调用的第三方库,百度地图,这样就涉及到坐标转换的问题
可以在百度地图api的实例中可以找到转换的实例

//将GPS坐标转换成百度地图的坐标    function exchange(){        var convertor = new BMap.Convertor();        var pointArr = [];        pointArr.push(centerPointer);        convertor.translate(pointArr,1,5,translateCallback);    }    function translateCallback(data){        if(data.status==0){            var marker = new BMap.Marker(data.points[0]);            map.addOverlay(marker);            map.setCenter(data.points[0]);            plus.nativeUI.closeWaiting();        }    }

目前的坐标系有百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系

百度地图的坐标是在火星坐标的基础上进行了二次加密

阅读全文
0 0
原创粉丝点击