ios 地图导航
2015-06-26 15:25
495 查看
自带导航
// 使用系统自带的
NSString *destination = 地址;
if ((destination.length ==0))
return;
// 2.地理编码
CLGeocoder *geocoder = [[CLGeocoderalloc]
init];
[geocoder
geocodeAddressString:destinationcompletionHandler:^(NSArray *placemarks,NSError
*error) {
if( placemarks.count ==0 || error)
return ;
// 2.1
拿到 CLPlaceMark 对象
CLPlacemark *clpm = [placemarksfirstObject];
// 2.2 创建 MKPlacemark
MKPlacemark *mkpm = [[MKPlacemarkalloc]
initWithPlacemark:clpm];
// 2.3 创建 MKMapItem
获取到目的地信息
MKMapItem *destionationItem = [[MKMapItemalloc]
initWithPlacemark:mkpm];
// 2.4 获取起点信息
MKMapItem *sourceItem = [MKMapItemmapItemForCurrentLocation];
// 2.5 开始导航
[selfstartNavitionWithDestionationItem:destionationItemsourceItem:sourceItem];
导航方法:
/**
* 开始导航
*
* @param destionationItem
目的地
* @param sourceItem
起点
*/
- (void)startNavitionWithDestionationItem:(MKMapItem *)destionationItem sourceItem:(MKMapItem
*) sourceItem
{
NSArray *items =@[sourceItem,destionationItem];
NSDictionary *options =@{
MKLaunchOptionsDirectionsModeKey:MKLaunchOptionsDirectionsModeDriving,//
方式
MKLaunchOptionsShowsTrafficKey :@YES,
//开启路况
MKLaunchOptionsMapTypeKey :@(MKMapTypeStandard)
//地图模式
};
//
开始导航
[MKMapItemopenMapsWithItems:items
launchOptions:options];
}
使用其他方式(调起其他app转载):
// 判断地图是不是存在
if ([[UIApplication sharedApplication]canOpenURL:[NSURL URLWithString:@"baidumap://map/"]]){
}
if ([[UIApplication sharedApplication]canOpenURL:[NSURL URLWithString:@"iosamap://"]]){
}
// 进行导航
if ([@"使用百度地图导航" isEqualToString:title])
{
NSString *urlString = [[NSString stringWithFormat:@"baidumap://map/direction?origin=latlng:%f,%f|name:我的位置&destination=latlng:%f,%f|name:终点&mode=driving",currentLat, currentLon,_shopLat,_shopLon] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding] ;
[[UIApplication sharedApplication]openURL:[NSURL URLWithString:urlString]];
}
else if ([@"使用高德地图导航" isEqualToString:title])
{
NSString *urlString = [[NSString stringWithFormat:@"iosamap://navi?sourceApplication=%@&backScheme=%@&poiname=%@&lat=%f&lon=%f&dev=1&style=2",@"app name", yourscheme, @"终点", _shopLat, _shopLon] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[[UIApplication sharedApplication]openURL:[NSURL URLWithString:urlString]];
}
附录:实用高德地图官方的api:http://lbs.amap.com/api/uri-api/ios-uri-explain/
// 使用系统自带的
NSString *destination = 地址;
if ((destination.length ==0))
return;
// 2.地理编码
CLGeocoder *geocoder = [[CLGeocoderalloc]
init];
[geocoder
geocodeAddressString:destinationcompletionHandler:^(NSArray *placemarks,NSError
*error) {
if( placemarks.count ==0 || error)
return ;
// 2.1
拿到 CLPlaceMark 对象
CLPlacemark *clpm = [placemarksfirstObject];
// 2.2 创建 MKPlacemark
MKPlacemark *mkpm = [[MKPlacemarkalloc]
initWithPlacemark:clpm];
// 2.3 创建 MKMapItem
获取到目的地信息
MKMapItem *destionationItem = [[MKMapItemalloc]
initWithPlacemark:mkpm];
// 2.4 获取起点信息
MKMapItem *sourceItem = [MKMapItemmapItemForCurrentLocation];
// 2.5 开始导航
[selfstartNavitionWithDestionationItem:destionationItemsourceItem:sourceItem];
导航方法:
/**
* 开始导航
*
* @param destionationItem
目的地
* @param sourceItem
起点
*/
- (void)startNavitionWithDestionationItem:(MKMapItem *)destionationItem sourceItem:(MKMapItem
*) sourceItem
{
NSArray *items =@[sourceItem,destionationItem];
NSDictionary *options =@{
MKLaunchOptionsDirectionsModeKey:MKLaunchOptionsDirectionsModeDriving,//
方式
MKLaunchOptionsShowsTrafficKey :@YES,
//开启路况
MKLaunchOptionsMapTypeKey :@(MKMapTypeStandard)
//地图模式
};
//
开始导航
[MKMapItemopenMapsWithItems:items
launchOptions:options];
}
使用其他方式(调起其他app转载):
// 判断地图是不是存在
if ([[UIApplication sharedApplication]canOpenURL:[NSURL URLWithString:@"baidumap://map/"]]){
}
if ([[UIApplication sharedApplication]canOpenURL:[NSURL URLWithString:@"iosamap://"]]){
}
// 进行导航
if ([@"使用百度地图导航" isEqualToString:title])
{
NSString *urlString = [[NSString stringWithFormat:@"baidumap://map/direction?origin=latlng:%f,%f|name:我的位置&destination=latlng:%f,%f|name:终点&mode=driving",currentLat, currentLon,_shopLat,_shopLon] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding] ;
[[UIApplication sharedApplication]openURL:[NSURL URLWithString:urlString]];
}
else if ([@"使用高德地图导航" isEqualToString:title])
{
NSString *urlString = [[NSString stringWithFormat:@"iosamap://navi?sourceApplication=%@&backScheme=%@&poiname=%@&lat=%f&lon=%f&dev=1&style=2",@"app name", yourscheme, @"终点", _shopLat, _shopLon] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[[UIApplication sharedApplication]openURL:[NSURL URLWithString:urlString]];
}
附录:实用高德地图官方的api:http://lbs.amap.com/api/uri-api/ios-uri-explain/
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- PHP的栏目导航程序
- javascript实现当前页导航激活的方法
- 基于jquery固定于顶部的导航响应浏览器滚动条事件
- jquery实现导航固定顶部的效果仿蘑菇街
- jQuery实现带滚动线条导航效果的方法
- jQuery制作的别致导航有阴影背景高亮模式窗口
- js判断客户端是iOS还是Android等移动终端的方法
- IOS开发环境windows化攻略
- Mono for Android 实现高效的导航(Effective Navigation)
- js实现多选项切换导航菜单的方法
- .net平台推送ios消息的实现方法
- php可应用于面包屑导航的递归寻找家谱树实现方法
- 探讨Android与iOS,我们将何去何从?