// // MKMapViewController.m // MKMapView // // Created by xiaoyao on 15/3/25. // Copyright (c) 2015年 lije. All rights reserved. // #import "MKMapViewController.h" #import <CoreLocation/CoreLocation.h> #import <MapKit/MapKit.h> #import "CAnnotation.h" @interface MKMapViewController ()<MKMapViewDelegate,CLLocationManagerDelegate> { MKMapView *_mapView; CLLocationManager *_locationManager; } @end @implementation MKMapViewController - (void)viewDidLoad { [super viewDidLoad] ; [self setUpUI]; } - (void)setUpUI { CGRect rect = [UIScreen mainScreen].bounds; _mapView = [[MKMapView alloc] initWithFrame:rect]; _mapView.delegate = self; [self.view addSubview:_mapView]; if (![CLLocationManager locationServicesEnabled] || ![CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorizedWhenInUse) { [_locationManager requestWhenInUseAuthorization]; _locationManager.delegate = self; [_locationManager startUpdatingLocation]; } // 设置 _mapView.mapType = MKMapTypeStandard; // 返回用户追踪轨迹,启动定位 _mapView.userTrackingMode = MKUserTrackingModeFollow; CAnnotation *ca = [[CAnnotation alloc] init]; CLLocationCoordinate2D coor = CLLocationCoordinate2DMake(36.56, 101.74); ca.title = @"lije"; ca.subtitle = @"lije’home"; ca.coordinate = coor; ca.image = [UIImage imageNamed:@"ca1"]; // 添加大头针 [_mapView addAnnotation:ca]; CAnnotation *ca2 = [[CAnnotation alloc] init]; CLLocationCoordinate2D coor2 = CLLocationCoordinate2DMake(41.31, 121.51); ca2.title = @"zs"; ca2.subtitle = @"zs’home is jinzhou"; ca2.coordinate = coor2; ca2.image= [UIImage imageNamed:@"ca2"]; [_mapView addAnnotation:ca2]; } #pragma mark - 地图代理方法 - (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation { NSLog(@"%@",userLocation); } // 返回大头针视图 - (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation { if ([annotation isKindOfClass:[CAnnotation class]]) { static NSString *anotationKey = @"Annotation1"; MKAnnotationView *annotationView = [_mapView dequeueReusableAnnotationViewWithIdentifier:anotationKey]; // 如果缓冲池不存在则创建缓冲池对象 if (!annotationView) { annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:anotationKey]; annotationView.canShowCallout = true; UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"zs.jpeg"]]; annotationView.leftCalloutAccessoryView = imageView; annotationView.calloutOffset = CGPointMake(0, 1); } annotationView.annotation = annotation; annotationView.image = ((CAnnotation *)annotation).image; return annotationView; } else { // 如果返回nil则使用默认的大头针视图 return nil; } } @end // // CAnnotation.h // MKMapView // // Created by xiaoyao on 15/3/25. // Copyright (c) 2015年 lije. All rights reserved. // #import <Foundation/Foundation.h> #import <MapKit/MapKit.h> @interface CAnnotation : NSObject<MKAnnotation> /** * @brief 定制大头针,重写大头针协议的三个属性 */ @property (nonatomic, copy) NSString *title; // 大头针标题 @property (nonatomic, copy) NSString *subtitle; // 副标题 @property (nonatomic) CLLocationCoordinate2D coordinate; // 位置 // 自定义大头针图片属性 @property (nonatomic, strong) UIImage *image; @end
原文:http://blog.csdn.net/u010606986/article/details/44678513