iOS呼叫第三方導航和線路規劃
線路規劃:
https://blog.csdn.net/qq_19979539/article/details/51938995
百度地圖:baidumap:
高德地圖:iosamap:
騰訊地圖:qqmap:
谷歌地圖:comgooglemapsurl:
系統地圖就不用這麼麻煩了,直接這樣就好:
CLLocationCoordinate2D endCoor =座標;
MKMapItem *currentLocation = [MKMapItem mapItemForCurrentLocation];
MKMapItem *toLocation = [[MKMapItem alloc] initWithPlacemark:[[MKPlacemark alloc] initWithCoordinate:endCoor addressDictionary:nil]];
toLocation.name = [NSString stringWithFormat:@"到 %@", 目的地];
[MKMapItem openMapsWithItems:@[currentLocation, toLocation]
launchOptions:@{MKLaunchOptionsDirectionsModeKey: MKLaunchOptionsDirectionsModeDriving,MKLaunchOptionsShowsTrafficKey: [NSNumber numberWithBool:YES]}];
其他地圖的開啟如下:
百度地圖:
NSString *stringURL = [NSString stringWithFormat:@"baidumap://map/direction?origin=%f,%f&destination=%f,%f&mode=driving",user.userLocCoord2D.latitude, user.userLocCoord2D.longitude,
目的地.latitude, 目的地.longitude];
[[UIApplication sharedApplication] openURL:url]
高德地圖:
NSString *urlString = [[NSString stringWithFormat:@"iosamap://path?sourceApplication=%@&backScheme=%@&sname=%@&dname=%@&dev=0&m=0&t=0&sid=BGVIS1&did=BGVIS2&dlat=%lf&dlon=%lf",@"APP名稱", @"iosamap", @"我的位置",目的地,endCoor.latitude, endCoor.longitude] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[[UIApplication sharedApplication]openURL:[NSURL URLWithString:urlString]];
騰訊地圖:
NSString *urlString =[[NSString stringWithFormat:@"qqmap://map/routeplan?type=drive&from=我的位置&to=%@&tocoord=%lf,%lf&policy=1&referer=tengxun",目的地,endCoor.latitude,endCoor.longitude] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]];
谷歌地圖:
NSString *urlString = [[NSString stringWithFormat:@"comgooglemapsurl://www.google.com/maps/preview/@%lf,%lf,6z",endCoor.latitude, endCoor.longitude] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[[UIApplication sharedApplication]openURL:[NSURL URLWithString:urlString]];
---------------------
作者:塵清_iOS
來源:CSDN
原文:https://blog.csdn.net/qq_19979539/article/details/51938995
目的地導航:
https://www.cnblogs.com/jyking/p/4939637.html
蘋果:
1.
NSString *urlString = [[NSString stringWithFormat:@
"http://maps.apple.com/?daddr=%f,%f&saddr=slat,slng"
,coordinate.latitude, coordinate.longitude] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]
2.
MKMapItem *currentLocation = [MKMapItem mapItemForCurrentLocation];
MKMapItem *toLocation = [[MKMapItem alloc] initWithPlacemark:[[MKPlacemark alloc] initWithCoordinate:coordinate addressDictionary:nil]];
[MKMapItem openMapsWithItems:@[currentLocation, toLocation]
launchOptions:@{MKLaunchOptionsDirectionsModeKey: MKLaunchOptionsDirectionsModeDriving,
MKLaunchOptionsShowsTrafficKey: [NSNumber numberWithBool:YES]}];
百度:
NSString *urlString = [[NSString stringWithFormat:@
"baidumap://map/direction?origin={{我的位置}}&destination=latlng:%f,%f|name=目的地&mode=driving&coord_type=gcj02"
,coordinate.latitude, coordinate.longitude] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
要注意幾點:
1. origin={{我的位置}}
這個是不能被修改的 不然無法把出發位置設定為當前位置
2. destination=latlng:%f,%f|name=目的地
name=XXXX name這個欄位不能省略 否則導航會失敗 而後面的文字則可以隨便填
3. coord_type=gcj02
coord_type允許的值為bd09ll、gcj02、wgs84 如果你APP的地圖SDK用的是百度地圖SDK 請填bd09ll 否則 就填gcj02 wgs84
高德:NSString *urlString = [[NSString stringWithFormat:@
"iosamap://navi?sourceApplication=%@&backScheme=%@&lat=%f&lon=%f&dev=0&style=2"
,appName,urlScheme,coordinate.latitude, coordinate.longitude] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
要注意幾點:
1. sourceApplication=%@&backScheme=%@
sourceApplication代表你自己APP的名稱 會在之後跳回的時候顯示出來 所以必須填寫 backScheme是你APP的URL Scheme 不填是跳不回來的喲
2. dev=0
這裡填0就行了,跟上面的gcj02一個意思 1代表wgs84 也用不上
谷歌:
NSString *urlString = [[NSString stringWithFormat:@
"comgooglemaps://?x-source=%@&x-success=%@&saddr=&daddr=%f,%f&directionsmode=driving"
,appName,urlScheme,coordinate.latitude, coordinate.longitude] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];