iOS:UIMapView地图视图控件的简单使用

简介:

可以通过设置MKMapView的mapViewType设置地图类型

MKMapTypeStandard 普通地图
MKMapTypeSatellite 卫星云图 
MKMapTypeHybrid 普通地图覆盖于卫星云图之上
 

@property (nonatomic) MKMapType mapType;  //地图类型

@property (nonatomic) MKCoordinateRegion region;  //位置区域

@property (nonatomic) CLLocationCoordinate2D centerCoordinate;//位置经纬度

 

//位置区域范围(0~1)

typedef struct {

    CLLocationDegrees latitudeDelta;

    CLLocationDegrees longitudeDelta;

} MKCoordinateSpan;

 

//位置经纬度

typedef struct {

CLLocationDegrees latitude;

CLLocationDegrees longitude;

} CLLocationCoordinate2D;

 

//位置区域

typedef struct {

CLLocationCoordinate2D center;

MKCoordinateSpan span;

} MKCoordinateRegion;

 

 

//在地图上设置显示区域

- (void)setRegion:(MKCoordinateRegion)region animated:(BOOL)animated;

- (void)setCenterCoordinate:(CLLocationCoordinate2D)coordinate animated:(BOOL)animated;

 

 
MapView会将一些事件传递给它的代理(遵守MKMapViewDelegate协议),代理方法如下:
mapViewWillStartLoadingMap: 当地图界面将要加载时调用
mapView:viewForAnnotation: 当地图上有一些动画效果展示\加载时调用
mapViewWillStartLocatingUser:当准备进行一个位置定位时调用
mapView:regionDidChangeAnimated: 当显示的区域发生变化时调用
mapView:didUpdateUserLocation:当用户位置发生变化时调用
 
 
具体实例如下:
1、导入CoreLocation/Mapkit框架
2、拖入一个UIMapView控件到控制器中
3、在ViewController.m文件中导入必要的库文件
4、将MapView关联为IBOutLet属性,同时让ViewController类实现地图协议
5、代码实现功能
//显示地图
复制代码
- (void)viewDidLoad {
    [super viewDidLoad];
    //设置地图的属性
    self.mapView.mapType = MKMapTypeHybrid;
    
    //设置区域的经纬度坐标
    CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(40, 116);//(经度、纬度)
    
    //设置经纬度范围(越小越精确)
    MKCoordinateSpan span = MKCoordinateSpanMake(0.1, 0.1);
    
    //设置地图显示的区域
    self.mapView.region = MKCoordinateRegionMake(coordinate, span);
    
    //设置地图的代理
    self.mapView.delegate = self;
}
复制代码

//实现地图协议

#pragma mark -mapView的方法

复制代码
#pragma mark -地图开始加载
-(void)mapViewWillStartLoadingMap:(MKMapView *)mapView
{
    NSLog(@"开始加载地图");
}
#pragma mark -地图加载完毕
-(void)mapViewDidFinishLoadingMap:(MKMapView *)mapView
{
    NSLog(@"地图加载完毕");
}
#pragma mark -地图区域将要改变
-(void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated
{
    MKCoordinateRegion region = mapView.region;
    
    NSLog(@"经度:%f,纬度:%f",region.center.latitude,region.center.longitude);
}
#pragma mark -地图区域已经改变
-(void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
{
    MKCoordinateRegion region = mapView.region;
    
    NSLog(@"经度:%f,纬度:%f",region.center.latitude,region.center.longitude);
}
复制代码

演示结果截图:

加载调用了代理方法,输出为:

2015-10-19 21:50:19.241 05-mapkit-MapView[7278:360386] 开始加载地图
2015-10-19 21:50:19.261 05-mapkit-MapView[7278:360386] 地图加载完毕

地图显示:

 

 
程序猿神奇的手,每时每刻,这双手都在改变着世界的交互方式!
分类: iOS高级
 
 
本文转自当天真遇到现实博客园博客,原文链接: http://www.cnblogs.com/XYQ-208910/p/4893237.html,如需转载请自行联系原作者
相关文章
|
iOS开发
iOS 多个滚动控件嵌套Demo
iOS 多个滚动控件嵌套Demo
69 0
|
iOS开发
iOS 常用的 上下左右 拉刷新控件
iOS 常用的 上下左右 拉刷新控件
102 0
|
iOS开发
iOS短信验证码控件,自动输入回调两次解决办法
iOS短信验证码控件,自动输入回调两次解决办法
462 0
|
iOS开发
IOS的UITableView控件简单使用
IOS的UITableView控件简单使用
156 0
|
iOS开发
iOS开发 - 写一个刷新的控件(未封装,适合新手学习,查看原理)
iOS开发 - 写一个刷新的控件(未封装,适合新手学习,查看原理)
148 0
iOS开发 - 写一个刷新的控件(未封装,适合新手学习,查看原理)
|
安全 iOS开发
iOS小技能:下拉刷新控件的适配
1. 下拉顶部背景色设置: 往tableView的父控件添加拉伸背景视图 2. present 半屏适配 iOS13 modalPresentationStyle属性默认不是全屏样式`UIModalPresentationFullScreen`,而是半屏样式,需要根据需求手动设置。 present 半屏,会导致列表下拉刷新失效。
206 0
iOS小技能:下拉刷新控件的适配
|
iOS开发
iOS小技能:自动布局实现兄弟控件N等分且宽高比例是1:N(xib 上实现)
本文为 iOS视图约束专题的第三篇:xib上使用自动布局教程
180 0
|
存储 前端开发 程序员
iOS开发:实现点击常用控件弹出地区选择框(万能方法)
在iOS开发中会遇到一些选择选项的需求,而且点击一个控件弹出一个选择框,选择之后展示到前端,然后再把选择的内容传给后台或者做本地存储。这个需求对于大多数开发者来说可以为小儿科,但是作为一个爱记录的程序猿来说相当可贵,所以还是那句话,只分享给有缘人,大牛可以飘过,不喜勿喷请走开。
435 0
iOS开发:实现点击常用控件弹出地区选择框(万能方法)
|
数据可视化 程序员 iOS开发
iOS开发:用XIB拖控件关联时报错:“Could not insert new outlet connection…”解决方法
在iOS开发过程中,尤其是iOS开发初期,会遇到各种各样的错误,有些错误是开发者的不熟悉或者疏忽大意造成的,还有些是无厘头的错误,可以通过重启Xcode或者重启电脑就可解决。
267 0
iOS开发:用XIB拖控件关联时报错:“Could not insert new outlet connection…”解决方法
|
iOS开发
iOS开发-加在透明视图上的控件会透明
iOS开发-加在透明视图上的控件会透明
137 0