导航

来源:互联网 发布:catia v5软件下载 编辑:程序博客网 时间:2024/04/28 08:04

实现导航有3种方法

  1. 将需要导航的位置丢给系统自带的地图APP进行导航
  2. 发送网络请求到公司服务器获取导航数据然后自己手动绘制导航(一般公司是不会这样做的)
  3. 利用三方SDK实现导航(百度)

首先介绍系统自带的app导航,这里用到的类是:MKMapItem

主要方法是:

+ (void)opnenMapsWithItems:(NSArray *) launchOptions:(NSDictionary *);

具体实现

[self.geocoder geocodeAddressString:startStr completionHandler:^(NSArray *placemarks, NSError *error) {    //获取出发点    if(!placemarks.count) return;    CLPlacemark *startclpm = [placemarks firstObject];    [self.geocoder geocodeAddressString:endStr completionHandler:^(NSArray *placemarks, NSError *error) {        // 获取目的地        if(!placemarks.count) return;        CLPlacemark *endclpm = [placemarks firstObject];            //设置item参数            MKPlacemark *startpm = [[MKPlacemark alloc] initWithPlacemark:startclpm];            MKMapItem *startItem = [[MKMapItem alloc] initWithPlacemark:startpm];            MKPlacemark *endpm = [[MKPlacemark alloc] initWithPlacemark:endclpm];            MKMapItem *endItem = [[MKMapItem alloc] initWithPlacemark:endpm];            NSArray *items = @[startItem, endItem];            //设置launchOptions参数            NSMutableDictionary *md = [NSMutableDictionary dictionary];            md[MKLaunchOptionsDirectionsModeKey] = MKLaunchOptionsDirectionsModeDriving;//导航            md[MKLaunchOptionsMapTypeKey] = @(MKMapTypeHybrid);//混合            [MKMapItem openMapsWithItems:items launchOptions:md];    }    ]}]

获取导航路线信息

需要用到的对象是:MKDirections
具体实现:

MKDirectionRequest *request = [MKDirectionsRequest alloc] init];request.source = startItem; //这里的item都是上面所得到的MKMapItem对象request.destination = endItem;// 创建MKDirections对象MKdirections *directions = [MKDirections alloc] initWithRequest:request];[directions calculateDirectionsWithCompletionHandler:^(MKDirectionsResponse *response, NSError *error) {        NSArray *routes = response.routes;        for (MKRoute *route in routes) {            //每条路线            NSArray *steps = route.steps;            for (MKRouteStep *step in steps) {                //每个步骤            }        }}]

绘制导航路线(本质:往地图上添加覆盖)

用到的方法是 addoverlay:
然后就会调用代理方法
话不多说,直接上代码

//在之前代码的基础上[self.mapView addOverlay:route.polyline];//然后再外面监听代理方法- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay{    MKPolylineRenderer *line = [[MKPolylineRenderer alloc] initWithPolyline:overlay];    line.lineWidth = 5; // 路线的宽度    line.strokeColor = [UIColor redColor];// 路线的颜色    // 返回路线    return line;}

集成百度地图

讲真,百度地图,直接看百度的官方介绍就可以了,答题方法也差不多,不过百度最好用的还是poi检索,可以搜索周边的吃住行等等。在这里我做简单的介绍吧

  1. 首先你他要称为百度的开发者
  2. 然后就可以创建应用,记住,有用的是key和你填写的安全码(具体怎么操作,百度会傻瓜式的教你)
  3. 然后就是百度的SDK下载,以及配置其环境。百度有官方文档http://lbsyun.baidu.com/index.php?title=iossdk/guide/buildproject 详情看官方,我就不翻译,免得出错
  4. 还是那句话,具体怎么应用,百度有demo以及文档
0 0