1.根據(jù)你手機(jī)上有沒有安裝這個(gè)地圖應(yīng)用,沒有就不會(huì)出現(xiàn)。
- (BOOL)canOpenURL:(NSURL*)url NS_AVAILABLE_IOS(3_0);
2.在IOS9之后,蘋果進(jìn)一步完善了安全機(jī)制,必須在plist里面設(shè)置url scheme白名單,不然無(wú)法打開對(duì)應(yīng)的應(yīng)用

3.判斷并裝入數(shù)組
-?(NSArray*)getInstalledMapAppWithEndLocation:(CLLocationCoordinate2D)endLocation
{
NSMutableArray*maps?=?[NSMutableArrayarray];
//蘋果地圖
NSMutableDictionary*iosMapDic?=?[NSMutableDictionarydictionary];
iosMapDic[@"title"]?=@"蘋果地圖";
[mapsaddObject:iosMapDic];
//百度地圖
if([[UIApplicationsharedApplication]canOpenURL:[NSURLURLWithString:@"baidumap://"]])?{
NSMutableDictionary*baiduMapDic?=?[NSMutableDictionarydictionary];
baiduMapDic[@"title"]?=@"百度地圖";
NSString*urlString?=?[[NSStringstringWithFormat:@"baidumap://map/direction?origin={{我的位置}}&destination=latlng:%f,%f|name=北京&mode=driving&coord_type=gcj02",endLocation.latitude,endLocation.longitude]stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
baiduMapDic[@"url"]?=?urlString;
[mapsaddObject:baiduMapDic];
}
//高德地圖
if([[UIApplicationsharedApplication]canOpenURL:[NSURLURLWithString:@"iosamap://"]])?{
NSMutableDictionary*gaodeMapDic?=?[NSMutableDictionarydictionary];
gaodeMapDic[@"title"]?=@"高德地圖";
NSString*urlString?=?[[NSStringstringWithFormat:@"iosamap://navi?sourceApplication=%@&backScheme=%@&lat=%f&lon=%f&dev=0&style=2",@"導(dǎo)航功能",@"nav123456",endLocation.latitude,endLocation.longitude]stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
gaodeMapDic[@"url"]?=?urlString;
[mapsaddObject:gaodeMapDic];
}
//谷歌地圖
if([[UIApplicationsharedApplication]canOpenURL:[NSURLURLWithString:@"comgooglemaps://"]])?{
NSMutableDictionary*googleMapDic?=?[NSMutableDictionarydictionary];
googleMapDic[@"title"]?=@"谷歌地圖";
NSString*urlString?=?[[NSStringstringWithFormat:@"comgooglemaps://?x-source=%@&x-success=%@&saddr=&daddr=%f,%f&directionsmode=driving",@"導(dǎo)航測(cè)試",@"nav123456",endLocation.latitude,?endLocation.longitude]stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
googleMapDic[@"url"]?=?urlString;
[mapsaddObject:googleMapDic];
}
//騰訊地圖
if([[UIApplicationsharedApplication]canOpenURL:[NSURLURLWithString:@"qqmap://"]])?{
NSMutableDictionary*qqMapDic?=?[NSMutableDictionarydictionary];
qqMapDic[@"title"]?=@"騰訊地圖";
NSString*urlString?=?[[NSStringstringWithFormat:@"qqmap://map/routeplan?from=我的位置&type=drive&tocoord=%f,%f&to=終點(diǎn)&coord_type=1&policy=0",endLocation.latitude,?endLocation.longitude]stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
qqMapDic[@"url"]?=?urlString;
[mapsaddObject:qqMapDic];
}
returnmaps;
}
4.底部彈窗
UIActionSheet*myActionSheet = [[UIActionSheetalloc]init];
myActionSheet.delegate = self;
[myActionSheetaddButtonWithTitle:@"取消"];
[myActionSheetshowInView:[UIApplicationsharedApplication].keyWindow];
#pragma mark - UIActionSheetDelegate
- (void)actionSheet:(UIActionSheet*)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
?if(buttonIndex != -1) {
if(buttonIndex?==0)?{
[selfnavAppleMap];
return;
}
NSDictionary*dic =self.maps[buttonIndex];
NSString*urlString = dic[@"url"];
[[UIApplicationsharedApplication]openURL:[NSURLURLWithString:urlString]];
}
}
//蘋果地圖
-?(void)navAppleMap
{
CLLocationCoordinate2D?gps?=?[JZLocationConverterbd09ToWgs84:self.destinationCoordinate2D];
MKMapItem*currentLoc?=?[MKMapItemmapItemForCurrentLocation];
MKMapItem*toLocation?=?[[MKMapItemalloc]initWithPlacemark:[[MKPlacemarkalloc]initWithCoordinate:gpsaddressDictionary:nil]];
NSArray*items?=?@[currentLoc,toLocation];
NSDictionary*dic?=?@{
MKLaunchOptionsDirectionsModeKey?:?MKLaunchOptionsDirectionsModeDriving,
MKLaunchOptionsMapTypeKey?:?@(MKMapTypeStandard),
MKLaunchOptionsShowsTrafficKey?:?@(YES)
};
[MKMapItemopenMapsWithItems:itemslaunchOptions:dic];
}