标签:
1,在VC中添加地图界面MKMapView(全屏)
// 北纬:39.90960456049752
// 东经:116.3972282409668
***这是经纬度的结构体**
CLLocationCoordinate2D coord = CLLocationCoordinate2DMake(39.90960456049752, 116.3972282409668);
***这是表示缩放级别***
MKCoordinateSpan span = MKCoordinateSpanMake(.001, .001);
并且此时要建立一个结构体把经纬度和缩放级别装载一起,让地图显示到制定的位置:
[self.myMV setRegion:MKCoordinateRegionMake(coord, span)];
6、在地图中添加大头针:
需要创建一个自定义的类,继承NSObject取名MyAnnotation。此时要让此类在.h中import<MapKit/MapKit.h>,并且实现一个协议:
@interface MyAnnotation : NSObject<MKAnnotation>————但是这个协议有些限制,要给其添加属性,进入协议,其中有一个必须和两个可选属性,把其三个都复制到。h中:
@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;
@property (nonatomic, readonly, copy) NSString *title;
@property (nonatomic, readonly, copy) NSString *subtitle;
readonly是只读的意思,不能编辑,修改,所以去掉,所以:
@property (nonatomic) CLLocationCoordinate2D coordinate;
@property (nonatomic, copy) NSString *title;
@property (nonatomic, copy) NSString *subtitle;
7、此时在VC中import myAnnotation,
在VDL中添加大头针:
MyAnnotation *ann = [[MyAnnotation alloc]init];——添加大头针的对象
ann.coordinate = coord;——这个是大头针的经纬度
ann.title = @"天安门”;——这是大头针的标题内容
ann.subtitle = @"我爱北京天安门!”;————备注内容
[self.myMV addAnnotation:ann];
————————————————————————————————————————————————————
8、添加自定义大头针:
新建一个类继承于MKAnnotationView(前提是要在sb中拖入MKMapView)
取名为MKAnnotationView
并且在sb中连线delegate线
9、在vc中添加协议
@interface ViewController ()<MKMapViewDelegate>
进入此协议,
复制出来
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation{
引入import”MKAnnotationView“
在方法中写入
MyAnnotationView *av = (MyAnnotationView *)这个()中是个此类型的内容[mapView dequeueReusableAnnotationViewWithIdentifier:@"ann"];
if (!av) {
av = [[MyAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:@"ann"];
}
return av;
}
10.在MyAnnotationView.m中初始化
- (instancetype)initWithAnnotation:(id<MKAnnotation>)annotation reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithAnnotation:annotation reuseIdentifier:reuseIdentifier];
if (self) {
//修改大头针的样式
self.image = [UIImage imageNamed:@"index_map.png"];
return self;
}
此时显示完毕。
————————————————————————
注意:在此初始化方法中可以添加任意物,
11、此时还可以在其他坐标上添加其他的大头针
首先获取经纬度,
然后在vc中添加ann2
MyAnnotation *ann2 = [[MyAnnotation alloc]init];
ann2.coordinate = CLLocationCoordinate2DMake(39.8068719483, 116.4608274052);
[self.myMV addAnnotation:ann2];
12、当大头针被点击出现的事件:
进入协议中,找到方法:当显示区域发生改变时。
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated{
MyAnnotation *ann2 = [[MyAnnotation alloc]init];
ann2.coordinate = mapView.centerCoordinate;(屏幕显示中央)
[self.myMV addAnnotation:ann2];
}
此时每移动一次 中央添加一个大头针
13、再进入协议中找到方法:点击选中时
- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view{
NSLog(@"点击了大头针");
}
1,在VC中添加地图界面MKMapView(全屏)
// 北纬:39.90960456049752
// 东经:116.3972282409668
***这是经纬度的结构体**
CLLocationCoordinate2D coord = CLLocationCoordinate2DMake(39.90960456049752, 116.3972282409668);
***这是表示缩放级别***
MKCoordinateSpan span = MKCoordinateSpanMake(.001, .001);
并且此时要建立一个结构体把经纬度和缩放级别装载一起,让地图显示到制定的位置:
[self.myMV setRegion:MKCoordinateRegionMake(coord, span)];
6、在地图中添加大头针:
需要创建一个自定义的类,继承NSObject取名MyAnnotation。此时要让此类在.h中import<MapKit/MapKit.h>,并且实现一个协议:
@interface MyAnnotation : NSObject<MKAnnotation>————但是这个协议有些限制,要给其添加属性,进入协议,其中有一个必须和两个可选属性,把其三个都复制到。h中:
@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;
@property (nonatomic, readonly, copy) NSString *title;
@property (nonatomic, readonly, copy) NSString *subtitle;
readonly是只读的意思,不能编辑,修改,所以去掉,所以:
@property (nonatomic) CLLocationCoordinate2D coordinate;
@property (nonatomic, copy) NSString *title;
@property (nonatomic, copy) NSString *subtitle;
7、此时在VC中import myAnnotation,
在VDL中添加大头针:
MyAnnotation *ann = [[MyAnnotation alloc]init];——添加大头针的对象
ann.coordinate = coord;——这个是大头针的经纬度
ann.title = @"天安门”;——这是大头针的标题内容
ann.subtitle = @"我爱北京天安门!”;————备注内容
[self.myMV addAnnotation:ann];
————————————————————————————————————————————————————
8、添加自定义大头针:
新建一个类继承于MKAnnotationView(前提是要在sb中拖入MKMapView)
取名为MKAnnotationView
并且在sb中连线delegate线
9、在vc中添加协议
@interface ViewController ()<MKMapViewDelegate>
进入此协议,
复制出来
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation{
引入import”MKAnnotationView“
在方法中写入
MyAnnotationView *av = (MyAnnotationView *)这个()中是个此类型的内容[mapView dequeueReusableAnnotationViewWithIdentifier:@"ann"];
if (!av) {
av = [[MyAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:@"ann"];
}
return av;
}
10.在MyAnnotationView.m中初始化
- (instancetype)initWithAnnotation:(id<MKAnnotation>)annotation reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithAnnotation:annotation reuseIdentifier:reuseIdentifier];
if (self) {
//修改大头针的样式
self.image = [UIImage imageNamed:@"index_map.png"];
return self;
}
此时显示完毕。
————————————————————————
注意:在此初始化方法中可以添加任意物,
11、此时还可以在其他坐标上添加其他的大头针
首先获取经纬度,
然后在vc中添加ann2
MyAnnotation *ann2 = [[MyAnnotation alloc]init];
ann2.coordinate = CLLocationCoordinate2DMake(39.8068719483, 116.4608274052);
[self.myMV addAnnotation:ann2];
12、当大头针被点击出现的事件:
进入协议中,找到方法:当显示区域发生改变时。
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated{
MyAnnotation *ann2 = [[MyAnnotation alloc]init];
ann2.coordinate = mapView.centerCoordinate;(屏幕显示中央)
[self.myMV addAnnotation:ann2];
}
此时每移动一次 中央添加一个大头针
13、再进入协议中找到方法:点击选中时
- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view{
NSLog(@"点击了大头针");
}
标签:
原文地址:http://www.cnblogs.com/lovemyios/p/4836614.html