iOS6.0以后我们可以在应用中直接调用苹果自带的地图应用了,并且可以实现搜索单个位置,查询线路。
难度不大,但是搜索的时候只能传过去经纬度坐标,因此很多时候就要把地理位置信息转换成经纬度坐标了,具体看代码:
NSString *oreillyAddress =@"北京市东城区东单";
//下边就是利用CLGeocoder把地理位置信息转换成经纬度坐标;
CLGeocoder *myGeocoder = [[CLGeocoderalloc]init];
[myGeocodergeocodeAddressString:oreillyAddresscompletionHandler:^(NSArray*placemarks,NSError *error) {
//placemarks就是转换成坐标的数组(当地理位置信息不够准确的时候可能会查询出来几个坐标);
if ([placemarkscount] >0 && error ==nil){
NSLog(@"%lu ", (long)[placemarkscount]);
NSMutableArray *arrtemp=[[NSMutableArrayalloc]initWithCapacity:0];
for (int i=0; i<[placemarkscount]; i++) {
CLPlacemark *firstPlacemark = [placemarksobjectAtIndex:i];
//查看CLPlacemark这个类可以看到里边有很多属性;位置的名称等。
//下面就是来调用苹果地图应用了;
MKMapItem *toLocation = [[MKMapItemalloc]initWithPlacemark:[[MKPlacemarkalloc] initWithCoordinate:CLLocationCoordinate2DMake(firstPlacemark.location.coordinate.latitude,firstPlacemark.location.coordinate.longitude)addressDictionary:nil]];
toLocation.name=firstPlacemark.name;
[arrtempaddObject:toLocation];
}
//打开地图
//1.搜索位置;
//[MKMapItem openMapsWithItems:arrtemp launchOptions:nil];
//2.查询线路;
MKMapItem *currentLocation = [MKMapItemmapItemForCurrentLocation];//当前位置
NSMutableDictionary *dict=[[NSMutableDictionaryalloc]initWithCapacity:0];
[dict setObject:MKLaunchOptionsDirectionsModeWalkingforKey:MKLaunchOptionsDirectionsModeKey];
[dict setObject:[NSNumbernumberWithBool:YES]forKey:MKLaunchOptionsShowsTrafficKey];
[MKMapItemopenMapsWithItems:[NSArrayarrayWithObjects:currentLocation, [arrtemp objectAtIndex:0],nil]launchOptions:dict];
//MKLaunchOptionsDirectionsModeKey方式:步行,开车
//MKLaunchOptionsShowsTrafficKey 显示交通状况
//MKMapItem 进去后看其他属性
}
elseif ([placemarkscount] ==0 &&
error ==nil){
// NSLog(@"Found no placemarks.");
}
elseif (error !=nil){
// NSLog(@"An error occurred = %@", error);
}
}];