欢迎转载,转载请注明出处
本文地址: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