iOS开发调用苹果自带的地图应用


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);

        }

    }];


iOS开发调用苹果自带的地图应用_第1张图片


你可能感兴趣的:(ios,ios,开发,调用苹果地图,地理位置转经纬度,MKMapItem,调用系统应用)