第一步:添加白名单
iOS 9系统策略更新,限制了http协议的访问,此外应用需要在“Info.plist”中将要使用的URL Schemes列为白名单,才可正常检查其他应用是否安装
百度:baidumap
高德:iosamap
第二步:跳转代码
/**
* 是否安装 百度地图
*/
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"baidumap://map/"]]){
NSString *urlString = [NSString stringWithFormat:@"baidumap://map/marker?location=%f,%f&title=%@&content=%@&src=应用名称",lat,lon,title,@"描述"];
NSDictionary *dic = @{@"name": @"百度地图", @"url": urlString};
}
/**
* 是否安装 高德地图
*/
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"iosamap://"]]) {
NSString *urlString = [NSString stringWithFormat:@"iosamap://viewMap?sourceApplication=应用名称&poiname=%@&lat=%f&lon=%f", @"描述", lat, lon];
NSDictionary *dic = @{@"name": @"高德地图",@"url": urlString};
}
/**
* 本机地图
*/
{
CLLocationCoordinate2D desCoor = CLLocationCoordinate2DMake(lat, lon);
MKPlacemark * placemark = [[MKPlacemark alloc] initWithCoordinate:desCoor addressDictionary:[NSDictionary dictionaryWithObject:des forKey:(NSString*)kABPersonAddressStreetKey]];
NSDictionary *dic = @{@"name": @"本机自带地图",
@"des": placemark};
}
第三部:打开地图
// 打开苹果自带地图
MKMapItem * sfStore = [[MKMapItem alloc] initWithPlacemark:placemark];
[sfStore openInMapsWithLaunchOptions:nil];
// 打开百度、高德
[[UIApplication sharedApplication] openURL:url];
网友评论