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

11 篇文章 2 订阅
9 篇文章 0 订阅

我们以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坐标系

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

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值