IOS学习之——地图3 调用苹果地图

欢迎转载,转载请注明出处

本文地址:http://blog.csdn.net/zhenggaoxing/article/details/42710853

综述:

这里的苹果地图调用是指从咱们的软件跳转到苹果地图,我们要做的就是把数据设置弄好,在使用苹果地图就可以了

苹果地图上展示一个点

添加相关的framework
技术分享

我们要再苹果地图上展示一个点,需要什么呢?1需要位置,2需要位置相关的信息 。有这两个信息就可以了
    CLGeocoder *geocoder=[CLGeocoder new];
    // 使用地理信息反编码,来获取位置和信息
    [geocoder geocodeAddressString:textQueryTextField.text completionHandler:^(NSArray *placemarks, NSError *error) {
        NSLog(@"查询记录数目:%i",(int)[placemarks count]);
        if ([placemarks count]>0) {
            CLPlacemark *placemark=placemarks[0];
            
            CLLocationCoordinate2D coordinate=placemark.location.coordinate;
            NSDictionary *address=placemark.addressDictionary;
            
            // MKPlacemark 是地图相关信息的类
            MKPlacemark *place=[[MKPlacemark alloc]initWithCoordinate:coordinate/*位置*/ addressDictionary:address/*相关的信息*/];
            
            // MKMapItem 类封装了有关地图上点的信息
            MKMapItem *mapItem=[[MKMapItem alloc]initWithPlacemark:place];
            // 调用苹果地图的方法
            [mapItem openInMapsWithLaunchOptions:nil];
            
            [textQueryTextField resignFirstResponder];
        }
    }];
要解释一下:1获取了位置信息(CLPlacemark) 2 把位置和信息传给地图(MKPlacemark)3 调用苹果地图(openInMapsWithLaunchOptions 方法)

效果:
技术分享技术分享

展示路线

这里展示的路线是从手机定位位置,到你想去位置的路线,展示路线比展示一个点要多一个要设置的:什么方式去那个点
            //地图上设置行车路线
            NSDictionary* options =[[NSDictionary alloc]initWithObjectsAndKeys:
                                    MKLaunchOptionsDirectionsModeDriving,MKLaunchOptionsDirectionsModeKey, nil];
            
            MKMapItem *mapItem = [[MKMapItem alloc]initWithPlacemark:place];
            [mapItem openInMapsWithLaunchOptions:options];
这里解释一下:
怎么设置呢:用NSDictionary 类型的参数设置 ,

设定行车路线:
MKLaunchOptionsDirectionsModeDriving 有两个键值:

MKLaunchOptionsDirectionsModeDriving——驾车

MKLaunchOptionsDirectionsModeWalking——骑车


还有几种设定的key:

MKLaunchOptionsMapTypeKey:设定地图类型

MKLaunchOptionsShowsTrafficKey:设定交通情况

MKLaunchOptionsMapCenterKey:设定地图中心

MKLaunchOptionsMapSpanKey:设定地图跨度

看看效果

技术分享

苹果地图上展示多个点

展示多个点,使用openMapsWithItems 方法实现:加载数组便可
    CLGeocoder *geocoder = [[CLGeocoder alloc] init];
    [geocoder geocodeAddressString:self.textTextField.text completionHandler:^(NSArray
                                                                         *placemarks, NSError *error) {
        NSLog(@"查询记录数:%i",(int)[placemarks count]);
        
        NSMutableArray* array = [NSMutableArray new];
        
        for (int i = 0; i < [placemarks count]; i++) {
            
            CLPlacemark* placemark = placemarks[i];
            
            CLLocationCoordinate2D coordinate = placemark.location.coordinate;
            NSDictionary* address = placemark.addressDictionary;
            
            MKPlacemark *place = [[MKPlacemark alloc]
                                  initWithCoordinate:coordinate addressDictionary:address];
            
            MKMapItem *mapItem = [[MKMapItem alloc]initWithPlacemark:place];
            
            [array addObject:mapItem];
        }
        
        //关闭键盘
        [self.textTextField resignFirstResponder];
        
        if ([array count] > 0) {
            [MKMapItem openMapsWithItems:array launchOptions:nil];
        }
    }];
看看效果
技术分享



源代码:

https://git.oschina.net/zhengaoxing/No15.3appleMap/tree/master






















郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。