1. 程式人生 > >mui使用百度地圖sdk及定位方法

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,可能就好了(如果有其他辦法能夠定位準確,也希望能一起探討)