mui使用百度地图sdk及定位方法

一、使用前配置:参考http://ask.dcloud.net.cn/article/29

       注意事项:

    (1)HBuilder默认打包使用的签名为"BA:AD:09:3A:82:82:9F:B4:32:A7:B2:8C:B4:CC:F0:E9:F3:7D:AE:58"(Android打包证书)。

    (2)应用包名,在提交App云端打包时默认为“io.dcloud.%APPID%”(用户可自定义修改),调试时建议使用“io.dcloud.HBuilder”,这样可以直接Hbuilder调试,不用打包成app。

二、定位代码

1、使用百度地图jssdk:

    //html引入js

    <script type="text/javascript" src="http://api.map.baidu.com/api?ak=‘你的ak’&v=3.0"></script>

    //js方法

    var map,mapid,mapindex=0,mark,longitude,latitude

    var map = new BMap.Map("allmap", {zoom:17});

    document.addEventListener('plusready', onPlusReady, false);

    function onPlusReady(){
        mapid=plus.geolocation.watchPosition(function(p) {
            mapindex++
            longitude=p.coords.longitude;
            latitude=p.coords.latitude;
            map.clearOverlays();
            var gpsPoint = new BMap.Point(longitude, latitude),
            if(mapindex<4){
                map.setCenter(gpsPoint);
            }
            if(mapindex==5){
                plus.geolocation.clearWatch(mapid);
            }
            var marker=new BMap.Marker(gpsPoint)
            map.addOverlay(marker);
        }, function(e) {    
           mui.toast("定位失败!");
        },{provider:'baidu',coordsType:"bd09ll",enableHighAccuracy:true});

    }

2、使用h5+自带的sdk(参考:http://www.html5plus.org/doc/zh_cn/maps.html,http://www.html5plus.org/doc/zh_cn/geolocation.html)

var map,mapid,mapindex=0
document.addEventListener('plusready', onPlusReady, false);
var mark,longitude,latitude
function onPlusReady(){
    map = new plus.maps.Map("allmap", {zoom:17});
    mapid=plus.geolocation.watchPosition(function(p) {
        mapindex++
        longitude=p.coords.longitude;
        latitude=p.coords.latitude;
        map.clearOverlays();
        var gpsPoint = new plus.maps.Point(longitude, latitude);
        if(mapindex<4){
            map.setCenter(gpsPoint);
        }
        if(mapindex==5){
            plus.geolocation.clearWatch(mapid);
        }
        var marker=new plus.maps.Marker(gpsPoint)
        map.addOverlay(marker);
    }, function(e) {    
       mui.toast("定位失败!");
    },{provider:'baidu',coordsType:"bd09ll",enableHighAccuracy:true});

}

3、注意事项:

(1)由于使用的是百度地图{provider:'baidu',coordsType:"bd09ll",enableHighAccuracy:true}

(2)之所以使用plus.geolocation.watchPosition,是因为plus.geolocation.getCurrentPosition经常定位差别过大,不准确,所以建议如果你也遇到定位不准的情况下爱,可以尝试使用watchPosition,可能就好了(如果有其他办法能够定位准确,也希望能一起探讨)



猜你喜欢

转载自blog.csdn.net/qq_37530404/article/details/80435119