有时候我们做项目可能会用到地图,比如在地图上显示附近人,在微博客户端中显示附近微博。。。
所以我们有必要来了解一下关于地图视图

地图视图 MKMapView 继承与UIView

先来看一下属性吧

@property(nonatomic) MKMapType mapType //要显示地图的类型
enum {
MKMapTypeStandard, //标准地图,显示所有道路和路名
MKMapTypeSatellite, //显示卫星视图。
MKMapTypeHybrid //混合显示,将卫星视图展示在标准地图上
};
typedef NSUInteger MKMapType;

@property(nonatomic, getter=isZoomEnabled) BOOL zoomEnabled 
//是否使用捏合手势
@property(nonatomic, getter=isScrollEnabled) BOOL scrollEnabled
//是否可以滑动

@property(nonatomic, assign) id delegate //代理

@property(nonatomic) MKCoordinateRegion region

//在map view 中当前展示的区域

typedef struct {
CLLocationCoordinate2D center; //区域中心
MKCoordinateSpan span; //当前经度纬度的跨度即地图的缩放级别
} MKCoordinateRegion;

@property(nonatomic)CLLocationCoordinate2DcenterCoordinate
//map view 中心的坐标

@property(nonatomic)MKMapRectvisibleMapRect
//当前显示在map view 中的区域
typedef struct {
MKMapPoint origin;
MKMapSize size;
} MKMapRect;

@property(nonatomic)BOOLshowsUserLocation //是否显示用户位置
@property(nonatomic, readonly, getter=isUserLocationVisible)BOOLuserLocationVisible
//用户的当前位置是否显示在 map view 中,如果不能确定当前位置,则值为NO
@property(nonatomic, readonly)MKUserLocation *userLocation
//表示用户当前位置的注释对象

@property(nonatomic, readonly)NSArray *annotations
//与接收对象相关联的注释列表(也就是通常我们说的大头针)
@property(nonatomic, readonly)CGRectannotationVisibleRect
//当前显示的注释视图的可见的矩形区域
@property(nonatomic, copy)NSArray *selectedAnnotations
//当前被选定的注释视图(Annotation)

@property(nonatomic, readonly)NSArray *overlays
//与当前map view 相关联的覆盖层对象

@property(nonatomic)MKUserTrackingModeuserTrackingMode
//map view 跟踪用户位置的模式
enum {
MKUserTrackingModeNone = 0, //map view 不跟踪用户位置变化
MKUserTrackingModeFollow, //map view 跟随用户位置移动而移动
MKUserTrackingModeFollowWithHeading,
//map view 跟随用户移动,并随用户方向变化而旋转
};
typedef NSInteger MKUserTrackingMode;

下面是这个类的方法

操作map 的可视化部分 Manipulating the Visible Portion of the Map

- (void)setRegion:(MKCoordinateRegion)region animated:(BOOL)animated
//改变当前的可视化区域,其中参数region是将要展示的指定区域,是否使用动画

- (void)setCenterCoordinate:(CLLocationCoordinate2D)coordinate animated:(BOOL)animated
//改变、设置 map 的中心坐标 ,是否使用动画

- (void)setVisibleMapRect:(MKMapRect)mapRect animated:(BOOL)animate
//改变当前地图的可视化部分,显示指定的地图区域,并决定是否使用动画
- (void)setVisibleMapRect:(MKMapRect)mapRect edgePadding:(UIEdgeInsets)insets animated:(BOOL)animate
//改变当前地图的可视化部分,并允许你在指定的边缘增加空间

注释map Annotating the Map

- (void)addAnnotation:(id < MKAnnotation >)annotation
//为地图增加一个注释对象
- (void)addAnnotations:(NSArray *)annotations
//为地图增加一组注释对象

- (void)removeAnnotation:(id < MKAnnotation >)annotation
//移除一个指定的注释对象
- (void)removeAnnotations:(NSArray *)annotations
//移除一组注释对象

- (MKAnnotationView *)viewForAnnotation:(id < MKAnnotation >)annotation
//返回指定注释对象相关联的注释视图,如果视图还未创建则返回nil
//要注意的是如果注释对象不在当前地图可视区域内,那么将返回nil
因为如果注释对象没在当前地图的可视区域内,那么就不能与注释视图相联系

- (NSSet *)annotationsInMapRect:(MKMapRect)mapRect
//返回处于指定地图区域内的注释对象

- (MKAnnotationView *)dequeueReusableAnnotationViewWithIdentifier:(NSString *)identifier
//返回一个指定标识符的可重复利用的注释视图

管理注释对象的选择 Managing Annotation Selections

- (void)selectAnnotation:(id < MKAnnotation >)annotation animated:(BOOL)animated
//选择指定的注释对象,并为它显示标注的视图

- (void)deselectAnnotation:(id < MKAnnotation >)annotation animated:(BOOL)animated
//取消选定的注释对象,并隐藏它调出的视图

添加和移除覆盖层 Adding and Removing Overlays

- (void)addOverlay:(id < MKOverlay >)overlay
//添加单个覆盖层对象到map中
- (void)addOverlays:(NSArray *)overlays
//添加一组覆盖层对象

- (void)removeOverlay:(id < MKOverlay >)overlay
//移除一个覆盖层对象
- (void)removeOverlays:(NSArray *)overlays
//移除一组覆盖层对象

- (void)insertOverlay:(id < MKOverlay >)overlay atIndex:(NSUInteger)index
//在指定的位置插入一个覆盖层对象
- (void)insertOverlay:(id < MKOverlay >)overlay aboveOverlay:(id < MKOverlay >)sibling
//在指定的覆盖层对象上面插入另一个覆盖层对象
- (void)insertOverlay:(id < MKOverlay >)overlay belowOverlay:(id < MKOverlay >)sibling
//在指定的覆盖层对象下面插入另一个覆盖层对象

- (void)exchangeOverlayAtIndex:(NSUInteger)index1 withOverlayAtIndex:(NSUInteger)index2
//交换指定位置上的两个覆盖层对象

- (MKOverlayView *)viewForOverlay:(id < MKOverlay >)overlay
//返回与指定覆盖层对象相关联的视图,如果覆盖层不再显示屏上则返回nil

转换地图的坐标系 Converting Map Coordinates
其实也就是进行现实世界中的实际位置(经纬度)与视图中区域或点转化

- (CGPoint)convertCoordinate:(CLLocationCoordinate2D)coordinate toPointToView:(UIView *)view
//将map 中的一个坐标转化为指定视图中的一个点
- (CLLocationCoordinate2D)convertPoint:(CGPoint)point toCoordinateFromView:(UIView *)view
//与上相反,将指定视图中的一个点转化为一个map 中的坐标

- (CGRect)convertRegion:(MKCoordinateRegion)region toRectToView:(UIView *)view
//将map中指定的部分区域,转化为指定视图中的一个矩形区域
- (MKCoordinateRegion)convertRect:(CGRect)rect toRegionFromView:(UIView *)view
//与上,将指定视图中的一片区域转化为map的一个部分区域

调整 map 的区域 Adjusting Map Regions and Rectangles

- (MKCoordinateRegion)regionThatFits:(MKCoordinateRegion)region
//调整指定区域的纵横比例,以便于适应 map的视图框架

- (MKMapRect)mapRectThatFits:(MKMapRect)mapRect
//调整指定map 的矩形区域的纵横比例,以便于适应 map的视图框架
- (MKMapRect)mapRectThatFits:(MKMapRect)mapRect edgePadding:(UIEdgeInsets)insets
//调整指定map 的矩形区域的纵横比例,并合并指定的插入值
typedef struct {
CGFloat top, left, bottom, right;
} UIEdgeInsets;

跟踪用户位置 Tracking the User Location
- (void)setUserTrackingMode:(MKUserTrackingMode)mode animated:(BOOL)animated
//设置跟踪用户位置的模式

iOS MKMapView 地图视图相关推荐

  1. iOS - MKMapView 地图

    1.创建 MKMapView 地图 在 iOS6 或者 iOS7 中实现这个功能只需要添加地图控件.设置用户跟踪模式.在 mapView:didUpdateUserLocation: 代理方法中设置地 ...

  2. iOS 获取地图视图中心点经纬度长按添加大头针

    // 在info.plist 添加配置 上线对应的值要写说明 NSLocationAlwaysUsageDescription NSLocationWhenInUseUsageDescription ...

  3. 大疆文档(7)-Android教程-地图视图和航点App

    本节全篇为大疆 Mobile SDK 安卓教程 部分,ios教程参见 IOS教程 . 地图视图和航点应用程序 在本教程中,您将学习如何实现 DJIWaypoint Mission 功能并熟悉Missi ...

  4. iOS开发--地图与定位

    iOS开发--地图与定位 概览 现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功能不再是地图应用和导航应用所特有的.的确,有了地图和定位功能确实让我们的生活更加丰富多彩,极大的改变了我们 ...

  5. iOS 百度地图使用详解

    最近仿照美团做了款应用,刚好用到百度地图,高德地图之前用的比较多,只是这个项目的后台服务器是另外一个公司做的,他们用的就是百度地图,现在网上用百度地图的还不算太多,博文也是断断续续的,主要是中间跳跃有 ...

  6. flutter引入高德地图_Flutter笔记-调用原生IOS高德地图sdk

    一.前言 2017年底因公司业务组合部门调整,新的团队部分维护的项目用React Native技术混合开发.为适应环境变化,开启疯狂RN学习之旅,晚上回来啃资料看视频.可能由于本身对RN技术体验不感冒 ...

  7. iOS百度地图SDK之实时绘制轨迹(后台仍执行)

    首先,对于百度地图SDK的配置和环境搭建就不做说明,需要的人可以博客中另一篇文章看 <iOS百度地图SDK基本使用> ,本文的重点在于实现实时绘制轨迹的功能,并且对细节进行处理和优化 1. ...

  8. ios 百度地图指定区域_iOS百度地图简单使用详解

    百度地图 iOS SDK是一套基于iOS 5.0及以上版本设备的应用程序接口,不仅提供展示地图的基本接口,还提供POI检索.路径规划.地图标注.离线地图.定位.周边雷达等丰富的LBS能力 . 今天主要 ...

  9. iOS关于地图定位基础(二)

    在前一篇文章 iOS关于地图定位基础(一) 中我们主要总结了 iOS 里面利用原生 CoreLocation 框架实现基本定位功能和一些注意点,侧重点主要是iOS8+之后的定位授权与授权状态的使用.接 ...

最新文章

  1. 绝对定位下margin的作用
  2. Perl 校验命中的脚本
  3. 实战Nagios+Ganglia发送警告信息,短信,微信等
  4. mysql 包含非数字_mysql 正则表达式查询含有非数字和字符的记录
  5. 西北工业大学matlab安装,西北工业大学Matlab实验报告.doc
  6. 应用服务器web服务器_最受欢迎的应用服务器
  7. Git与GitHub学习笔记(六)使用 Github Pages 管理项目文档
  8. for循环语句例题及解析python_Python入门第8课,for语句综合练习,突破循环累加难点...
  9. thinkcmf 横向排列数据_Excel横向筛选出销量靠后的月份数据,你知道如何实现吗...
  10. This ZooKeeper instance is not currently serving requests
  11. 搭建sendmail邮件服务器
  12. J2EE是什么(一)
  13. 汽车加油问题(python)
  14. android开发屏幕投射到电视6,用电视吃鸡!将手机上的内容投射到电视机的屏幕上!...
  15. 清华大学交叉信息研究院姚班修改培养模式:姚班、智班、量信班全合并
  16. 你只会用 split?试试 StringTokenizer,性能可以快 4 倍!!
  17. Python基础-day02
  18. Python语言学习笔记-001-Python 3.3.0的配置与Hello World
  19. 华为LTE 模块AT命令拨号上网流程
  20. dnstop DNS分析工具

热门文章

  1. Microbiome:重新定义“卫生”的概念
  2. python使用matplotlib可视化3D直方图(3D histogram、三维直方图、包含三个坐标轴x、y、z)、3D直方图可视化多个维度数据的区别和联系
  3. ROC(receiver operating characteristic curve)曲线与ROC分析
  4. R语言data.table导入数据实战:data.table使用字符向量创建新的数据列
  5. R语言计算回归模型标准化残差实战(Standardized Residuals):识别回归模型中离群点
  6. R语言生存分析COX回归分析实战:以乳腺癌数据为例
  7. StatQuest-对RNA-seq的介绍
  8. c语言实现定长顺序存储,c语言:定长顺序串的基本操作实实现
  9. linux ip rcv处理,linux ip选项处理(二)
  10. php redis 二进制,php-redis扩展