最近項目中需要用到百度導航,大家都覺的導入百度的導航SDK比較麻煩,就直接跳轉到了百度導航。
在百度上找到了app調用百度導航的代碼基本一樣,如下:
NSString *urlString = [[NSString stringWithFormat:@"baidumap://map/direction?origin={{我的位置}}&destination=latlng:%f,%f|name=目的地&mode=driving&coord_type=gcj02",[info.dzwd doubleValue],[info.dzjd doubleValue]] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"baidumap://map/"]])
{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]];
}
else
{
[[[UIAlertView alloc]initWithTitle:@"沒有安裝百度地圖" message:@"" delegate:self cancelButtonTitle:@"確定" otherButtonTitles:nil,nil] show];
}
開始時百度地圖定位坐標
百度定位坐標.PNG
開始導航,跳轉到百度導航,會發現位置發生了漂移。
坐標漂移.PNG
是不是有點坑?。。》磸筒榭戳讼沦N代碼人的注解,都說coord_type=gcj02這個都不要改。
查相關資料才知道,百度定位和百度導航使用的是不同的坐標系
gcj02:表示定位成功后返回國測局經緯度坐標系坐標;
bd09:表示定位成功后返回百度墨卡托坐標系坐標;
bd09ll:表示定位成功后返回百度經緯度坐標系坐標。
即gcj02就是告訴百度導航我們使用國測局的坐標表示,而我們定位到的坐標是bd09ll坐標,坑?。。。?!將coord_type=gcj02改為coord_type=bd09ll, 導航坐標成功顯示,無漂移。
bd09ll坐標.PNG
總結:目前國內項目中多使用百度定位坐標,如果需要將百度定位坐標在百度導航上正確顯示,需要將coord_type設置為bd09ll。