iOS原生地图开发指南(二)

简介: iOS原生地图开发指南

5、MKMapView常用方法和属性

@property (nonatomic, getter=isZoomEnabled) BOOL zoomEnabled;

设置是否允许捏合手势进行地图缩放

@property (nonatomic, getter=isScrollEnabled) BOOL scrollEnabled;

设置是否允许滑动

@property (nonatomic, getter=isRotateEnabled) BOOL rotateEnabled;

设置是否允许旋转地图

@property (nonatomic, getter=isPitchEnabled) BOOL pitchEnabled;

设置是否支持3D效果

@property (nonatomic) BOOL showsPointsOfInterest;

设置是否显示兴趣点,例如学校,医院等

@property (nonatomic) BOOL showsBuildings;

设置是否显示建筑物轮廓,只在标准的地图中有效

@property (nonatomic) BOOL showsUserLocation;

是否显示用户位置

@property (nonatomic) MKUserTrackingMode userTrackingMode;

- (void)setUserTrackingMode:(MKUserTrackingMode)mode animated:(BOOL)animated;

设置更新用户位置的模式,当显示用户位置设置为YES,这个方法也设置了后,地图框架为我们直接集成了定位,地图上就会显示我们的位置,模式的枚举如下:

typedef NS_ENUM(NSInteger, MKUserTrackingMode) {
    MKUserTrackingModeNone = 0, // 不跟踪用户位置
    MKUserTrackingModeFollow, // 跟踪用户位置
    MKUserTrackingModeFollowWithHeading, // 当方向改变时跟踪用户位置
}

 

@property (nonatomic, readonly) MKUserLocation *userLocation;

获取用户位置的标注

@property (nonatomic, readonly, getter=isUserLocationVisible) BOOL userLocationVisible;

获取用户位置是否可见

- (void)addAnnotation:(id <MKAnnotation>)annotation;

在地图上添加一个标注

- (void)addAnnotations:(NSArray *)annotations;

在地图上添加一组标注

- (void)removeAnnotation:(id <MKAnnotation>)annotation;

移除一个标注

- (void)removeAnnotations:(NSArray *)annotations;

移除一组标注

@property (nonatomic, readonly) NSArray *annotations;

获取所有标注数组

- (MKAnnotationView *)viewForAnnotation:(id <MKAnnotation>)annotation;

获取标注的视图

- (MKAnnotationView *)dequeueReusableAnnotationViewWithIdentifier:(NSString *)identifier;

获取复用的标注

- (void)selectAnnotation:(id <MKAnnotation>)annotation animated:(BOOL)animated;

选中一个标注

- (void)deselectAnnotation:(id <MKAnnotation>)annotation animated:(BOOL)animated;

取消选中一个标注

@property (nonatomic, copy) NSArray *selectedAnnotations;

选中标注的数组

- (void)addOverlay:(id <MKOverlay>)overlay level:(MKOverlayLevel)level;

添加一个地图覆盖物,level是设置一个层级,枚举如下:

typedef NS_ENUM(NSInteger, MKOverlayLevel) {
    MKOverlayLevelAboveRoads = 0, // 覆盖物位于道路之上
    MKOverlayLevelAboveLabels//覆盖物位于标签之上
}

- (void)addOverlays:(NSArray *)overlays level:(MKOverlayLevel)level;

添加一组地图覆盖物

- (void)removeOverlay:(id <MKOverlay>)overlay;

移除一个地图覆盖物

- (void)removeOverlays:(NSArray *)overlays;

移除一组地图覆盖物

- (void)insertOverlay:(id <MKOverlay>)overlay atIndex:(NSUInteger)index level:(MKOverlayLevel)level;

在索引处插入一个地图覆盖物

- (void)insertOverlay:(id <MKOverlay>)overlay aboveOverlay:(id <MKOverlay>)sibling;

将一个地图覆盖物插在到某个覆盖物之上

- (void)insertOverlay:(id <MKOverlay>)overlay belowOverlay:(id <MKOverlay>)sibling;

将一个地图覆盖物插入到某个覆盖物之下

- (void)exchangeOverlay:(id <MKOverlay>)overlay1 withOverlay:(id <MKOverlay>)overlay2;

替换一个地图覆盖物

@property (nonatomic, readonly) NSArray *overlays;

地图覆盖物数组

- (NSArray *)overlaysInLevel:(MKOverlayLevel)level;

层级属性下的东土覆盖物数组

 

 

二、MKMapViewDelegate相关方法解读

- (void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated;

地图显示位置将要改变时调用的方法

- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated;

地图显示位置已经改变时调用的方法

- (void)mapViewWillStartLoadingMap:(MKMapView *)mapView;

地图将要加载时调用的方法

- (void)mapViewDidFinishLoadingMap:(MKMapView *)mapView;

地图加载完成时执行的方法

- (void)mapViewDidFailLoadingMap:(MKMapView *)mapView withError:(NSError *)error;

地图加载失败时执行的方法

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation;

渲染标注视图时调用的方法,可以通过这个方法自定义标注视图

- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views;

标注添加完成后调用的方法

- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view;

选中标注时调用的方法

- (void)mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKAnnotationView *)view;

取消选中标注时调用的方法

- (void)mapViewWillStartLocatingUser:(MKMapView *)mapView;

将要开始定位用户位置时调用的方法

- (void)mapViewDidStopLocatingUser:(MKMapView *)mapView;

停止定位用户位置时调用的方法

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation;

更新用户位置时调用的方法

- (void)mapView:(MKMapView *)mapView didFailToLocateUserWithError:(NSError *)error;

更新用户位置失败时调用的方法

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view didChangeDragState:(MKAnnotationViewDragState)newState

  fromOldState:(MKAnnotationViewDragState)oldState;

标注拖动状态改变调用的方法,MKAnnotationViewDragState的枚举如下:


         

- (void)mapView:(MKMapView *)mapView didChangeUserTrackingMode:(MKUserTrackingMode)mode animated:(BOOL)animated;

定位用户位置模式改变时调用的方法

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay;

渲染覆盖物视图时调用的方法,可以自定义覆盖物视图

- (void)mapView:(MKMapView *)mapView didAddOverlayViews:(NSArray *)overlayViews;

添加完成覆盖物数组执行的方法

 

备注:在iOS9中,地图类型的枚举又添加了两种:


         

 

 

目录
相关文章
|
开发框架 前端开发 Android开发
Flutter 与原生模块(Android 和 iOS)之间的通信机制,包括方法调用、事件传递等,分析了通信的必要性、主要方式、数据传递、性能优化及错误处理,并通过实际案例展示了其应用效果,展望了未来的发展趋势
本文深入探讨了 Flutter 与原生模块(Android 和 iOS)之间的通信机制,包括方法调用、事件传递等,分析了通信的必要性、主要方式、数据传递、性能优化及错误处理,并通过实际案例展示了其应用效果,展望了未来的发展趋势。这对于实现高效的跨平台移动应用开发具有重要指导意义。
1414 4
|
iOS开发
Flutter与iOS原生通信方式
Flutter与iOS原生通信方式
936 2
|
JSON JavaScript 前端开发
iOS小技能: 开发 uni-app 原生插件(支持iOS Extension)
术语:uni原生插件指的是将`原生开发的功能按照规范封装成插件包`,然后即可在 uni-app 前端项目中通过js调用原生能力。
2182 0
iOS小技能: 开发 uni-app 原生插件(支持iOS Extension)
|
Dart 开发工具 Android开发
Flutter与iOS原生混合开发
Flutter与iOS原生混合开发
786 2
|
存储 移动开发 JavaScript
【原生】sd.js帮助您简化繁重的获取数据、存储数据(CRUD)骚操作(吐槽~在安卓9.0以下或者IOS10.X以下手机端H5页面不支持,在这两种情况下的系统只能使用ajax或者原生js请求后台数据)
【原生】sd.js帮助您简化繁重的获取数据、存储数据(CRUD)骚操作(吐槽~在安卓9.0以下或者IOS10.X以下手机端H5页面不支持,在这两种情况下的系统只能使用ajax或者原生js请求后台数据)
|
移动开发 JavaScript weex
week-iOS的扩展之内置模块,将原生模块做成标签在weex中使用
week-iOS的扩展之内置模块,将原生模块做成标签在weex中使用
255 0
week-iOS的扩展之内置模块,将原生模块做成标签在weex中使用
|
JSON JavaScript 前端开发
iOS小技能: 开发 uni 原生插件(支持iOS Extension)
背景:app采用uni实现 需求: iOS App前台后台离线(杀死情况下)推送语音播报(到账xx元、收款播报、自定义推送铃)。 实现方式:uni-app 原生插件(支持iOS Extension)
823 0
iOS小技能: 开发 uni 原生插件(支持iOS Extension)
|
移动开发 前端开发 JavaScript
React Native | 原生IOS模块与JS通信,监听App被Kill
React Native | 原生IOS模块与JS通信,监听App被Kill
747 0
|
前端开发 iOS开发
React Native | 创建IOS原生模块
React Native | 创建IOS原生模块
630 0
|
iOS开发 芯片 MacOS
macOS Big Sur 正式发布并已开放下载,支持原生运行 iOS 和 iPadOS App
macOS Big Sur 正式发布并已开放下载,支持原生运行 iOS 和 iPadOS App
383 0