最近項目上碰到須要在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 } }