最近項目中需要用到百度導(dǎo)航,大家都覺的導(dǎo)入百度的導(dǎo)航SDK比較麻煩导而,就直接跳轉(zhuǎn)到了百度導(dǎo)航岔帽。
在百度上找到了app調(diào)用百度導(dǎo)航的代碼基本一樣,如下:
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];
}
開始時百度地圖定位坐標(biāo)
百度定位坐標(biāo).PNG
開始導(dǎo)航缓熟,跳轉(zhuǎn)到百度導(dǎo)航累魔,會發(fā)現(xiàn)位置發(fā)生了漂移。
坐標(biāo)漂移.PNG
是不是有點坑9换?研础!反復(fù)查看了下貼代碼人的注解彰触,都說coord_type=gcj02這個都不要改梯投。
查相關(guān)資料才知道,百度定位和百度導(dǎo)航使用的是不同的坐標(biāo)系
gcj02:表示定位成功后返回國測局經(jīng)緯度坐標(biāo)系坐標(biāo)况毅;
bd09:表示定位成功后返回百度墨卡托坐標(biāo)系坐標(biāo)分蓖;
bd09ll:表示定位成功后返回百度經(jīng)緯度坐標(biāo)系坐標(biāo)。
即gcj02就是告訴百度導(dǎo)航我們使用國測局的坐標(biāo)表示尔许,而我們定位到的坐標(biāo)是bd09ll坐標(biāo)么鹤,坑啊N独取U籼稹!余佛!將coord_type=gcj02改為coord_type=bd09ll柠新, 導(dǎo)航坐標(biāo)成功顯示,無漂移辉巡。
bd09ll坐標(biāo).PNG
總結(jié):目前國內(nèi)項目中多使用百度定位坐標(biāo)恨憎,如果需要將百度定位坐標(biāo)在百度導(dǎo)航上正確顯示,需要將coord_type設(shè)置為bd09ll郊楣。