android和ios中webview獲取精肯定位的方案

最近項目上碰到須要在webview中獲取當前位置的地方,最開始是經過在h5中使用navigator.geolocation定位的方式,發如今部分安卓手機上獲取不了定位的經緯度。web

調整了,由IOS或者安卓獲取到經緯度,而後放到webview的url中。而後使用百度地圖的JS API進行座標轉換得到當前的地址,可是發現總有誤差。 相似這兒的示例:http://developer.baidu.com/map/jsdemo.htm#a5_2json

var convertor = new BMap.Convertor();
        var pointArr = [];
        pointArr.push(ggPoint);
        convertor.translate(pointArr, 1, 5, translateCallback)

最近在測試的時候,發現這個確實個問題,就瞭解一下定位的經緯度,安卓使用百度定位sdk,返回的是GCJ-02座標系,查了一下IOS定位座標,貌似在國內使用的高德地圖,也是返回的GCJ-02座標。api

但我在百度地圖JS API的文檔裏面找,沒有找到convertor.translate中的參數具體是指什麼,在什麼地方指定參數是什麼座標系。測試

最後看了一下WEB API,發現地址轉換至關簡單,使用以下地址就搞定了: http://api.map.baidu.com/geocoder/v2/?ak=qOgzH9SduWmfjSjMoHDMkSQ9tol4Zf9n&location=30.557046,104.071744&output=json&coordtype=gcj02llurl

其中location是經緯度,output是返回格式,coordtype就是指定參數座標系類型,而且結果至關精確。 終於解決了在webview中的定位問題,特此記錄。code

{
status: 0,
result: {
location: {
lng: 104.07823744785,
lat: 30.563013004601
},
formatted_address: "四川省成都市武侯區西蜀廊橋",
business: "",
addressComponent: {
adcode: "510107",
city: "成都市",
country: "中國",
direction: "",
distance: "",
district: "武侯區",
province: "四川省",
street: "西蜀廊橋",
street_number: "",
country_code: 0
},
poiRegions: [ ],
sematic_description: "成都遠方之家連鎖公寓新會展店北94米",
cityCode: 75
}
}
相關文章
相關標籤/搜索