APP用的是高德SDK
業務是用戶點擊APP中的導航按鈕,會根據用戶當前手機安裝地圖APP進行導航,順序是 1高德 2百度,如果用戶沒有安裝高德地圖APP則判斷是否有百度地圖APP因為APP是用的高德SDK所以在導航上沒有任何問題,跳轉百度后 坐標誤差比較大有時候 導航提示 未搜索到結果之類的,造成這個原因是高德和百度坐標不一至,這個時候需要坐標轉換
百度提供坐標轉換接口 http://developer.baidu.com/map/changeposition.htm 按文檔操作
http://api.map.baidu.com/geoconv/v1/?coords=lon,lat&from=3&to=5&output=json&ak={自己申請的key}
to 5表示 bd09ll(百度經緯度坐標),
然后將返回的坐標 bslat=x; bslon=y; 開發位置 belat=x,belon=y; 結果位置
然后執行跳轉
1 try { 2 url="intent://map/direction?origin=latlng:"+bslon+","+bslat+"|" + 3 "&destination=latlng:"+belon+","+belat+"|"+address+"&mode=driving®ion="+city+"&src=companyname|appname#Intent;" + 4 "scheme=bdapp;package=com.baidu.BaiduMap;end"; 5 Intent intent = Intent.getIntent(url); 6 } catch (URISyntaxException e) { 7 // TODO Auto-generated catch block 8 e.printStackTrace(); 9 } 10 11 12 startActivity(intent);
這里要注意的時候 傳入經緯度的時候 要看好 開始位置 latlng:是經度緯度 當時看到這個變量以為是緯度經度了 哎 文檔上面說明
http://developer.baidu.com/map/uri-introandroid.htm
這樣傳入坐標就正確就可以正確使用導航