码迷,mamicode.com
首页 > 移动开发 > 详细

2015 IOS 地图——在蓝懿教育 学习笔记

时间:2015-09-24 22:38:57      阅读:353      评论:0      收藏:0      [点我收藏+]

标签:

1,在VC中添加地图界面MKMapView(全屏)

2、选工程界面技术分享相对应的界面中倒数第二行,Build Phases选项中 选择第三个 的+号,弹出来搜索框输入mapk,选择搜索结果技术分享确认添加,此时地图能显示出来。
 
(3.在SB中的地图右侧选项有三个模式,(二维线路,卫星无线路,卫星有线路))
 
4、关联代码在vc中关联myMV。但此时并不被系统识别,此时要添加import<MapKit/MapKit.h>协议,此时就被识别了
 
5、此时要从网络获取到经纬度,比如天安门经纬度,
 
此时要用到方法——创建经纬度的结构体:
 

//    北纬: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(全屏)

2、选工程界面技术分享相对应的界面中倒数第二行,Build Phases选项中 选择第三个 的+号,弹出来搜索框输入mapk,选择搜索结果技术分享确认添加,此时地图能显示出来。
 
(3.在SB中的地图右侧选项有三个模式,(二维线路,卫星无线路,卫星有线路))
 
4、关联代码在vc中关联myMV。但此时并不被系统识别,此时要添加import<MapKit/MapKit.h>协议,此时就被识别了
 
5、此时要从网络获取到经纬度,比如天安门经纬度,
 
此时要用到方法——创建经纬度的结构体:
 

//    北纬: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(@"点击了大头针");

    

    

 

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2015 IOS 地图——在蓝懿教育 学习笔记

标签:

原文地址:http://www.cnblogs.com/lovemyios/p/4836614.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!