5+App使用定位


1、定位方法
    5+App定位方法:5+ API中的Geolocation模塊
    Geolocation目前支持h5內置的定位,百度,高德。h5內置定位支持wgs84坐標系;百度支持gcj02/bd09/bd090||坐標系;高德支持gcj02坐標系。定位模塊優先順序(高德>百度>h5內置 ),高德和百度的使用必須進行相關參數的配置才可以使用(打包之后,必須進行配置,在使用hbuilder自定義基座真機調試可以不需要,因為hbuilder自定義基座內置了這兩個地圖模塊,好像是兩個都內置了)
 
2、定位的實現
    system -- h5內置定位
    baidu   -- 百度定位
    amap   -- 高德定位
    這里比較模糊,懶得寫了,關於更多Geolocation參數說明你可以去這里 http://www.dcloud.io/runtime.html下載這個應用查看,或者是去這里 http://www.html5plus.org/doc/h5p.html進行查看
 
出現的問題, 在打包后使用system(wgs84)只能獲取到當前位置的經緯度信息,沒有位置信息(原因不知,可能系統內置定位模塊不支持地理反編碼)
 
解決方案: 注意坐標系
    1、獲取到經緯度信息, 然后使用地理反編碼獲取位置信息(我在這里使用的是百度的API,因為百度可以拿到單獨的省市區的數據,也可以拿到完整的數據)
        在百度的地理編碼中,可以使用兩種方式來實現
            (1)、使用JS API中的地址解析
var map = new BMap.Map("allmap");
var point = new BMap.Point(116.331398,39.897445);
map.centerAndZoom(point,12);
var geoc = new BMap.Geocoder();    

map.addEventListener("click", function(e){        
    var pt = e.point;
    geoc.getLocation(pt, function(rs){
        var addComp = rs.addressComponents;
        alert(addComp.province + ", " + addComp.city + ", " + addComp.district + ", " + addComp.street + ", " + addComp.streetNumber);
    });        
});

//具體參照:http://lbsyun.baidu.com/jsdemo.htm#i7_2

               (2)、使用 WEB API中的全球逆地理編碼接口

http://api.map.baidu.com/geocoder/v2/?callback=renderReverse&location=35.658651,139.745415&output=json&pois=1&ak=您的ak //GET請求

//這個接口需要自己寫一個服務代理一下, 直接js訪問會出現跨域
//手機端好像是沒有跨域問題的,忘記了.... //詳情參照:http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding-abroad
       
 
    至於這兩種方法的區別:我是不知道的
 
2、使用百度或者高德定位模塊(這里我使用的高德, 因為我的百度開發者賬號忘記了,手機卡不小心丟了,異地不能補卡,因為我不記得服務密碼)
        操作詳情: http://ask.dcloud.net.cn/article/29 //地圖插件配置
        SHA1我使用的是jdk自帶的一個工具keytool, 關於keytool操作自行百度,在這里你也可以使用雲端打包后使用的DCloud公用證書( http://ask.dcloud.net.cn/article/68),只要保持第三方服務中你配置的SHA1和包名和你的應用的證書的SHA1和包名一致就好了
 
下圖是高德地圖應用配置

 

下圖是 打包的配置

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM