显示苹果地图并添加标注

 

用到的类 CLGeocoder,用来将输入的地名编码为CLPlacemark,CLPlacemark封装了一地理信息

 

上代码

 

- (void)gencodeQuery :(NSString*)place

{

    CLGeocoder *geocoder = [[CLGeocoder alloc]init];

    //对地理位置进行编码

    [geocoder geocodeAddressString:place completionHandler:^(NSArray *placemarks,NSError *error){

    

    

        for (int i = 0; i != placemarks.count; ++i)

        {

            CLPlacemark *placemark = placemarks[i];

            

            //地图进行缩放,第一个参数是中心,第二个参数是南北跨度,第三个参数是东西跨度

            MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(placemark.location.coordinate, 30000, 30000);

            [mapView setRegion:region];

            

            //在地图上添加标注,MapLocation是自定义类,实现了MKAnnotation协议

            MapLocation *annotation = [[MapLocation alloc]init];

            annotation.streetAddress = placemark.thoroughfare;

            annotation.city = placemark.locality;

            annotation.state = placemark.administrativeArea;

            annotation.zip = placemark.postalCode;

            annotation.coordinate = placemark.location.coordinate;

            //添加标注,添加后回回调MKMapViewDelegate

            //- (MKAnnotationView*)mapView:(MKMapView *)parmMapView viewForAnnotation:(id<MKAnnotation>)annotation

            //自定义MapLocation的原因是addAnnotation接收id <MKAnnotation>参数

            [mapView addAnnotation:annotation];

            

        }

        

    }];

 

}

 

#pragma MKMapViewDelegate

 

- (MKAnnotationView*)mapView:(MKMapView *)parmMapView viewForAnnotation:(id<MKAnnotation>)annotation

{

    MKPinAnnotationView *animationView = (MKPinAnnotationView*)[parmMapView dequeueReusableAnnotationViewWithIdentifier:@"T"];

    if(animationView == nil)

        animationView = [[MKPinAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:@"T"];

    animationView.pinColor = MKPinAnnotationColorGreen;//设置标注的颜色

    animationView.animatesDrop = YES;//设置动画

    animationView.canShowCallout = YES;//显示详细信息当点击标注的时候

 

    return animationView;

 

}

 

自定义的类

@interface MapLocation : NSObject<MKAnnotation>

 

@property(nonatomic,readwrite) CLLocationCoordinate2D coordinate;

@property(nonatomic,strong) NSString *streetAddress;

@property(nonatomic,strong) NSString *city;

@property(nonatomic,strong) NSString *state;

@property(nonatomic,strong) NSString *zip;

 

@end

 

-------------

 

@implementation MapLocation

 

- (NSString*)title

{

    return@"您的位置!";

}

- (NSString*)subtitle

{

    NSString *ret = @"";

    ret = [ret stringByAppendingString:self.state];

    ret = [ret stringByAppendingString:self.city];

    return ret;

}

 

@end

 

你可能感兴趣的:(苹果)