由于考虑到,APP包的大小。在做导航的时候,我们没有必要,把高德或者百度等第三方sdk放到项目来进行集成。不仅费时而且费力,现在网上关于三方APP导航的文章太多。这里不再赘述太多。
先看下效果图:
选择导航的APP 苹果自带高德地图 高德导航 百度导航首先我们需要配置一些白名单。如下截图:
白名单info.plist添加LSApplicationQueriesSchemes,设置为Array。添加对应的白名单;
这里以高德,百度为例,高德:iosamap百度:baidumap;设置好以后就可以开始代码部分。
代码部分具体步骤如下。不想看的同学,直接下载demo。demo具体实现都MapTool工具类中写好。可直接使用下面的方法。
/**
调用三方导航
@param coordinate经纬度
@param name地图上显示的名字
@param tager当前控制器
*/
- (void)navigationActionWithCoordinate:(CLLocationCoordinate2D)coordinate WithENDName:(NSString*)name tager:(UIViewController*)tager;
要进行导航首先要知道终点的经纬度。
导入#import<MapKit/MapKit.h>。
定义一个CLLocationCoordinate2D属性,包含你目的地的经纬度。
@property(nonatomic,assign)CLLocationCoordinate2D coordinate;
这里假设位置为self.coordinate=CLLocationCoordinate2DMake(34.72,113.92);
拿到位置,就可以进行导航了
首先是苹果自带的高德简版地图:
代码就这么多
MKMapItem *currentLocation = [MKMapItem mapItemForCurrentLocation];
MKMapItem *tolocation = [[MKMapItem alloc] initWithPlacemark:[[MKPlacemark alloc] initWithCoordinate:coordinate addressDictionary:nil]];
tolocation.name = map_title;
[MKMapItem openMapsWithItems:@[currentLocation,tolocation]launchOptions:@{MKLaunchOptionsDirectionsModeKey:MKLaunchOptionsDirectionsModeDriving,
MKLaunchOptionsShowsTrafficKey:[NSNumber numberWithBool:YES]}];
高德地图:
NSString *urlsting =[[NSString stringWithFormat:@"iosamap://navi?sourceApplication= &backScheme= &lat=%f&lon=%f&dev=0&style=2",coordinate.latitude,coordinate.longitude]stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[[UIApplicationsharedApplication]openURL:[NSURL URLWithString:urlsting]];
百度地图:
NSString *urlsting =[[NSString stringWithFormat:@"baidumap://map/direction?origin={{我的位置}}&destination=latlng:%f,%f|name=目的地&mode=driving&coord_type=gcj02",coordinate.latitude,coordinate.longitude] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlsting]];
到这里三方App导航就已经完成。demo在上面。没看到的朋友,看这里Demo下载
网友评论