MAMapView.h.svn-base 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682
  1. //
  2. // MAMapView.h
  3. // MAMapKit
  4. //
  5. // Created by AutoNavi.
  6. // Copyright (c) 2013年 Amap. All rights reserved.
  7. //
  8. #import <UIKit/UIKit.h>
  9. #import "MAGeometry.h"
  10. #import "MAOverlay.h"
  11. #import "MAOverlayRenderer.h"
  12. #import "MAAnnotationView.h"
  13. #import "MAOverlayView.h"
  14. typedef NS_ENUM(NSInteger, MAMapLanguage)
  15. {
  16. MAMapLanguageZhCN = 0, ///< 中文
  17. MAMapLanguageEn = 1, ///< 英文
  18. };
  19. typedef NS_ENUM(NSInteger, MAMapType)
  20. {
  21. MAMapTypeStandard, ///< 普通地图
  22. MAMapTypeSatellite ///< 卫星地图
  23. };
  24. typedef NS_ENUM(NSInteger, MAUserTrackingMode)
  25. {
  26. MAUserTrackingModeNone = 0, ///< 不追踪用户的location更新
  27. MAUserTrackingModeFollow = 1, ///< 追踪用户的location更新
  28. MAUserTrackingModeFollowWithHeading = 2 ///< 追踪用户的location与heading更新
  29. };
  30. @protocol MAMapViewDelegate;
  31. @class MAUserLocation;
  32. @class MAAnnotationView;
  33. @class MAUserLocationRepresentation;
  34. @interface MAMapView : UIView
  35. #pragma mark - Properties
  36. ///地图View的Delegate
  37. @property (nonatomic, weak) id<MAMapViewDelegate> delegate;
  38. ///地图类型
  39. @property (nonatomic, assign) MAMapType mapType;
  40. ///地图语言
  41. @property (nonatomic, assign) MAMapLanguage language;
  42. ///是否显示交通,默认为NO
  43. @property (nonatomic, assign, getter = isShowTraffic) BOOL showTraffic;
  44. ///是否支持平移,默认为YES
  45. @property (nonatomic, assign, getter = isScrollEnabled) BOOL scrollEnabled;
  46. ///是否支持缩放,默认为YES
  47. @property (nonatomic, assign, getter = isZoomEnabled) BOOL zoomEnabled;
  48. ///标识当前地图中心位置是否在中国范围外。此属性不是精确判断,不能用于边界区域
  49. @property (nonatomic, readonly) BOOL isAbroad;
  50. ///是否允许对annotationView根据zIndex进行排序,默认为YES。当annotationView数量比较大时可能会引起性能问题,可以设置此属性为NO
  51. @property (nonatomic, assign) BOOL allowsAnnotationViewSorting;
  52. #pragma mark - Logo
  53. ///logo位置, 必须在mapView.bounds之内,否则会被忽略
  54. @property (nonatomic) CGPoint logoCenter;
  55. ///logo的宽高
  56. @property (nonatomic, readonly) CGSize logoSize;
  57. #pragma mark - Compass
  58. ///是否显示罗盘,默认为YES
  59. @property (nonatomic, assign) BOOL showsCompass;
  60. ///罗盘原点位置
  61. @property (nonatomic) CGPoint compassOrigin;
  62. ///罗盘的宽高
  63. @property (nonatomic, readonly) CGSize compassSize;
  64. #pragma mark - Scale
  65. ///是否显示比例尺,默认为YES
  66. @property (nonatomic) BOOL showsScale;
  67. ///比例尺原点位置
  68. @property (nonatomic) CGPoint scaleOrigin;
  69. ///比例尺的最大宽高
  70. @property (nonatomic, readonly) CGSize scaleSize;
  71. ///在当前缩放级别下, 基于地图中心点, 1 screen point 对应的距离(单位是米). 支持KVO
  72. @property (nonatomic, readonly) CGFloat metersPerPointForCurrentZoomLevel;
  73. #pragma mark - Movement
  74. ///当前地图的中心点经纬度坐标,改变该值时,地图缩放级别不会发生变化
  75. @property (nonatomic, assign) CLLocationCoordinate2D centerCoordinate;
  76. ///当前地图的经纬度范围,设定的该范围可能会被调整为适合地图窗口显示的范围
  77. @property (nonatomic, assign) MACoordinateRegion region;
  78. ///当前地图可见范围的map rect
  79. @property (nonatomic, assign) MAMapRect visibleMapRect;
  80. #pragma mark - Limitation
  81. ///设置可见地图区域的矩形边界,如限制地图只显示北京市范围
  82. @property (nonatomic, assign) MACoordinateRegion limitRegion;
  83. ///设置可见地图区域的矩形边界,如限制地图只显示北京市范围
  84. @property (nonatomic, assign) MAMapRect limitMapRect;
  85. #pragma mark - Zoom
  86. ///缩放级别, [3, 20]
  87. @property (nonatomic, assign) double zoomLevel;
  88. ///最小缩放级别, 最小值为3
  89. @property (nonatomic, assign) double minZoomLevel;
  90. ///最大缩放级别,最大值为20
  91. @property (nonatomic, assign) double maxZoomLevel;
  92. #pragma mark - UserLocation
  93. ///是否显示用户位置
  94. @property (nonatomic, assign, getter = isShowsUserLocation) BOOL showsUserLocation;
  95. ///当前的位置数据
  96. @property (nonatomic, readonly) MAUserLocation *userLocation;
  97. ///定位用户位置的模式
  98. @property (nonatomic) MAUserTrackingMode userTrackingMode;
  99. ///当前位置再地图中是否可见
  100. @property (nonatomic, readonly, getter=isUserLocationVisible) BOOL userLocationVisible;
  101. #pragma mark - Annotations
  102. ///标注数组
  103. @property (nonatomic, readonly) NSArray *annotations;
  104. ///处于选中状态的标注数据数据(其count == 0 或 1)
  105. @property (nonatomic, copy) NSArray *selectedAnnotations;
  106. ///annotation 可见区域
  107. @property (nonatomic, readonly) CGRect annotationVisibleRect;
  108. #pragma mark - Overlays
  109. ///Overlay数组
  110. @property (nonatomic, readonly) NSArray *overlays;
  111. #pragma mark - Compass func
  112. /**
  113. * @brief 设置罗盘的图像
  114. * @param image 当设置图像非空时,指南针将呈现该图像,如果为nil时,则恢复默认
  115. */
  116. - (void)setCompassImage:(UIImage *)image;
  117. #pragma mark - Scale func
  118. /**
  119. * @brief 在指定的缩放级别下, 基于地图中心点, 1 screen point 对应的距离(单位是米)
  120. * @param zoomLevel 指定的缩放级别, 在[minZoomLevel, maxZoomLevel]范围内
  121. * @return 对应的距离(单位是米)
  122. */
  123. - (CGFloat)metersPerPointForZoomLevel:(CGFloat)zoomLevel;
  124. #pragma mark - Movement func
  125. /**
  126. * @brief 设定地图中心点经纬度
  127. * @param centerCoordinate 要设定的地图中心点经纬度
  128. * @param animated 是否采用动画效果
  129. */
  130. - (void)setCenterCoordinate:(CLLocationCoordinate2D)centerCoordinate animated:(BOOL)animated;
  131. /**
  132. * @brief 设定当前地图的region
  133. * @param region 要设定的地图范围,用经纬度的方式表示
  134. * @param animated 是否采用动画效果
  135. */
  136. - (void)setRegion:(MACoordinateRegion)region animated:(BOOL)animated;
  137. /**
  138. * @brief 根据当前地图视图frame的大小调整region范围,返回适合当前地图frame的region,调整过程中当前地图的中心点不会改变
  139. * @param region 要调整的经纬度范围
  140. * @return 调整后的经纬度范围
  141. */
  142. - (MACoordinateRegion)regionThatFits:(MACoordinateRegion)region;
  143. /**
  144. * @brief 设置当前地图可见范围的map rect
  145. * @param mapRect 要调整的map rect
  146. * @param animated 是否采用动画效果
  147. */
  148. - (void)setVisibleMapRect:(MAMapRect)mapRect animated:(BOOL)animated;
  149. /**
  150. * @brief 设置当前地图可见范围的map rect
  151. * @param mapRect 要设置的map rect
  152. * @param insets 嵌入边界
  153. * @param animated 是否采用动画效果
  154. */
  155. - (void)setVisibleMapRect:(MAMapRect)mapRect edgePadding:(UIEdgeInsets)insets animated:(BOOL)animated;
  156. /**
  157. * @brief 调整map rect使其适合地图窗口显示的范围
  158. * @param mapRect 要调整的map rect
  159. * @return 调整后的maprect
  160. */
  161. - (MAMapRect)mapRectThatFits:(MAMapRect)mapRect;
  162. /**
  163. * @brief 调整map rect使其适合地图窗口显示的范围
  164. * @param mapRect 要调整的map rect
  165. * @param insets 嵌入边界
  166. * @return 调整后的map rect
  167. */
  168. - (MAMapRect)mapRectThatFits:(MAMapRect)mapRect edgePadding:(UIEdgeInsets)insets;
  169. #pragma mark - Zoom func
  170. /**
  171. * @brief 设置当前地图的缩放级别zoom level
  172. * @param newZoomLevel 要设置的zoom level
  173. * @param animated 是否采用动画效果
  174. */
  175. - (void)setZoomLevel:(double)newZoomLevel animated:(BOOL)animated;
  176. /**
  177. * @brief 设置当前地图的缩放级别zoom level
  178. * @param newZoomLevel 要设置的zoom level
  179. * @param pivot 指定缩放的锚点,屏幕坐标
  180. * @param animated 是否采用动画效果
  181. */
  182. - (void)setZoomLevel:(double)newZoomLevel atPivot:(CGPoint)pivot animated:(BOOL)animated;
  183. #pragma mark - Conversions func
  184. /**
  185. * @brief 将经纬度坐标转化为相对于指定view的坐标
  186. * @param coordinate 要转化的经纬度坐标
  187. * @param view 指定的坐标系统的view
  188. * @return 指定view的坐标
  189. */
  190. - (CGPoint)convertCoordinate:(CLLocationCoordinate2D)coordinate toPointToView:(UIView *)view;
  191. /**
  192. * @brief 将相对于view的坐标转化为经纬度坐标
  193. * @param point 要转化的坐标
  194. * @param view point所基于的view
  195. * @return 转化后的经纬度坐标
  196. */
  197. - (CLLocationCoordinate2D)convertPoint:(CGPoint)point toCoordinateFromView:(UIView *)view;
  198. /**
  199. * @brief 将map rect 转化为相对于view的坐标
  200. * @param region 要转化的 map rect
  201. * @param view 返回值所基于的view
  202. * @return 基于view的坐标
  203. */
  204. - (CGRect)convertRegion:(MACoordinateRegion)region toRectToView:(UIView *)view;
  205. /**
  206. * @brief 将相对于view的rectangle转化为region
  207. @param rect 要转化的rectangle
  208. @param view rectangle所基于的view
  209. @return 转化后的region
  210. */
  211. - (MACoordinateRegion)convertRect:(CGRect)rect toRegionFromView:(UIView *)view;
  212. #pragma mark - UserLocation func
  213. /**
  214. * @brief 设置追踪用户位置的模式
  215. * @param mode 要使用的模式
  216. * @param animated 是否采用动画效果
  217. */
  218. - (void)setUserTrackingMode:(MAUserTrackingMode)mode animated:(BOOL)animated;
  219. /**
  220. * @brief 设定UserLocationView样式。如果用户自定义了userlocation的annotationView,或者该annotationView还未添加到地图上,此方法将不起作用
  221. * @param representation 样式信息对象
  222. */
  223. - (void)updateUserLocationRepresentation:(MAUserLocationRepresentation *)representation;
  224. #pragma mark - Annotations func
  225. /**
  226. * @brief 向地图窗口添加标注,需要实现MAMapViewDelegate的-mapView:viewForAnnotation:函数来生成标注对应的View
  227. * @param annotation 要添加的标注
  228. */
  229. - (void)addAnnotation:(id <MAAnnotation>)annotation;
  230. /**
  231. * @brief 向地图窗口添加一组标注,需要实现MAMapViewDelegate的-mapView:viewForAnnotation:函数来生成标注对应的View
  232. *@param annotations 要添加的标注数组
  233. */
  234. - (void)addAnnotations:(NSArray *)annotations;
  235. /**
  236. * @brief 移除标注
  237. * @param annotation 要移除的标注
  238. */
  239. - (void)removeAnnotation:(id <MAAnnotation>)annotation;
  240. /**
  241. * @brief 移除一组标注
  242. * @param annotations 要移除的标注数组
  243. */
  244. - (void)removeAnnotations:(NSArray *)annotations;
  245. /**
  246. * @brief 根据标注数据过去标注view
  247. * @param annotation 标注数据
  248. * @return 对应的标注view
  249. */
  250. - (MAAnnotationView *)viewForAnnotation:(id <MAAnnotation>)annotation;
  251. /**
  252. * @brief 从复用内存池中获取制定复用标识的annotation view
  253. * @param identifier 复用标识
  254. * @return annotation view
  255. */
  256. - (MAAnnotationView *)dequeueReusableAnnotationViewWithIdentifier:(NSString *)identifier;
  257. /**
  258. * @brief 选中标注数据对应的view
  259. * @param annotation 标注数据
  260. 8 @param animated 是否有动画效果
  261. */
  262. - (void)selectAnnotation:(id <MAAnnotation>)annotation animated:(BOOL)animated;
  263. /**
  264. * @brief 取消选中标注数据对应的view
  265. * @param annotation 标注数据
  266. * @param animated 是否有动画效果
  267. */
  268. - (void)deselectAnnotation:(id <MAAnnotation>)annotation animated:(BOOL)animated;
  269. /**
  270. * @brief 获取指定投影矩形范围内的标注
  271. * @param mapRect 投影矩形范围
  272. * @return 标注集合
  273. */
  274. - (NSSet *)annotationsInMapRect:(MAMapRect)mapRect;
  275. /**
  276. * @brief 设置地图使其可以显示数组中所有的annotation, 如果数组中只有一个则直接设置地图中心为annotation的位置
  277. * @param annotations 需要显示的annotation
  278. * @param animated 是否执行动画
  279. */
  280. - (void)showAnnotations:(NSArray *)annotations animated:(BOOL)animated;
  281. /**
  282. * @brief 设置地图使其可以显示数组中所有的annotation, 如果数组中只有一个则直接设置地图中心为annotation的位置
  283. * @param annotations 需要显示的annotation
  284. * @param insets insets 嵌入边界
  285. * @param animated 是否执行动画
  286. */
  287. - (void)showAnnotations:(NSArray *)annotations edgePadding:(UIEdgeInsets)insets animated:(BOOL)animated;
  288. #pragma mark - Overlays func
  289. /**
  290. * @brief 查找指定overlay对应的Renderer,如果该Renderer尚未创建,返回nil
  291. * @param overlay 指定的overlay
  292. * @return 指定overlay对应的Renderer
  293. */
  294. - (MAOverlayRenderer *)rendererForOverlay:(id <MAOverlay>)overlay;
  295. - (MAOverlayView *)viewForOverlay:(id <MAOverlay>)overlay __attribute__ ((deprecated("use - (MAOverlayRenderer *)rendererForOverlay:(id <MAOverlay>)overlay instead")));
  296. /**
  297. * @brief 向地图添加Overlay,需要实现MAMapViewDelegate的-mapView:rendererForOverlay:函数来生成标注对应的Renderer
  298. * @param overlay 要添加的overlay
  299. */
  300. - (void)addOverlay:(id <MAOverlay>)overlay;
  301. /**
  302. * @brief 向地图添加一组Overlay,需要实现MAMapViewDelegate的-mapView:rendererForOverlay:函数来生成标注对应的Renderer
  303. * @param overlays 要添加的overlay数组
  304. */
  305. - (void)addOverlays:(NSArray *)overlays;
  306. /**
  307. * @brief 移除Overlay
  308. * @param overlay 要移除的overlay
  309. */
  310. - (void)removeOverlay:(id <MAOverlay>)overlay;
  311. /**
  312. * @brief 移除一组Overlay
  313. * @param overlays 要移除的overlay数组
  314. */
  315. - (void)removeOverlays:(NSArray *)overlays;
  316. /**
  317. * @brief 在指定的索引处添加一个Overlay
  318. * @param overlay 要添加的overlay
  319. * @param index 指定的索引
  320. */
  321. - (void)insertOverlay:(id <MAOverlay>)overlay atIndex:(NSUInteger)index;
  322. /**
  323. * @brief 在交换指定索引处的Overlay
  324. * @param index1 索引1
  325. * @param index2 索引2
  326. */
  327. - (void)exchangeOverlayAtIndex:(NSUInteger)index1 withOverlayAtIndex:(NSUInteger)index2;
  328. /**
  329. * @brief 在指定的Overlay之上插入一个overlay
  330. * @param overlay 带添加的Overlay
  331. * @param sibling 用于指定相对位置的Overlay
  332. */
  333. - (void)insertOverlay:(id <MAOverlay>)overlay aboveOverlay:(id <MAOverlay>)sibling;
  334. /**
  335. * @brief 在指定的Overlay之下插入一个overlay
  336. * @param overlay 带添加的Overlay
  337. * @param sibling 用于指定相对位置的Overlay
  338. */
  339. - (void)insertOverlay:(id <MAOverlay>)overlay belowOverlay:(id <MAOverlay>)sibling;
  340. /**
  341. * @brief 设置地图使其可以显示数组中所有的overlay
  342. * @param overlays 需要显示的overlays
  343. * @param animated 是否执行动画
  344. */
  345. - (void)showOverlays:(NSArray *)overlays animated:(BOOL)animated;
  346. /**
  347. * @brief 设置地图使其可以显示数组中所有的overlay
  348. * @param overlays 需要显示的overlays
  349. * @param insets insets 嵌入边界
  350. * @param animated 是否执行动画
  351. */
  352. - (void)showOverlays:(NSArray *)overlays edgePadding:(UIEdgeInsets)insets animated:(BOOL)animated;
  353. #pragma mark - Cache
  354. /**
  355. * @brief 清除所有磁盘上缓存的地图数据
  356. */
  357. - (void)clearDisk;
  358. @end
  359. #pragma mark - Snapshots
  360. ///地图view关于截图的类别
  361. @interface MAMapView (Snapshot)
  362. /**
  363. * @brief 在指定区域内截图(默认会包含该区域内的annotationView)
  364. * @param rect 指定的区域
  365. * @return 截图image
  366. */
  367. - (UIImage *)takeSnapshotInRect:(CGRect)rect;
  368. /**
  369. * @brief 获得地图当前可视区域截图
  370. * @param rect 指定截图区域
  371. * @param block 回调block
  372. */
  373. - (void)takeSnapshotInRect:(CGRect)rect withCompletionBlock:(void (^)(UIImage *resultImage, CGRect rect))block;
  374. @end
  375. #pragma mark - LocationOption
  376. ///定位相关参数的类别
  377. @interface MAMapView (LocationOption)
  378. ///设定定位的最小更新距离。默认为kCLDistanceFilterNone,会提示任何移动
  379. @property (nonatomic) CLLocationDistance distanceFilter;
  380. ///设定定位精度。默认为kCLLocationAccuracyBest
  381. @property (nonatomic) CLLocationAccuracy desiredAccuracy;
  382. ///设定最小更新角度。默认为1度,设定为kCLHeadingFilterNone会提示任何角度改变
  383. @property (nonatomic) CLLocationDegrees headingFilter;
  384. ///指定定位是否会被系统自动暂停。默认为YES。只在iOS 6.0之后起作用
  385. @property (nonatomic) BOOL pausesLocationUpdatesAutomatically;
  386. ///是否允许后台定位。默认为NO。只在iOS 9.0之后起作用。设置为YES的时候必须保证 Background Modes 中的 Location updates处于选中状态,否则会抛出异常
  387. @property (nonatomic) BOOL allowsBackgroundLocationUpdates;
  388. @end
  389. #pragma mark - MAMapViewDelegate
  390. ///地图view的delegate
  391. @protocol MAMapViewDelegate <NSObject>
  392. @optional
  393. /**
  394. * @brief 地图区域即将改变时会调用此接口
  395. * @param mapView 地图View
  396. * @param animated 是否动画
  397. */
  398. - (void)mapView:(MAMapView *)mapView regionWillChangeAnimated:(BOOL)animated;
  399. /**
  400. * @brief 地图区域改变完成后会调用此接口
  401. * @param mapView 地图View
  402. * @param animated 是否动画
  403. */
  404. - (void)mapView:(MAMapView *)mapView regionDidChangeAnimated:(BOOL)animated;
  405. /**
  406. * @brief 地图将要发生移动时调用此接口
  407. * @param mapView 地图view
  408. * @param wasUserAction 标识是否是用户动作
  409. */
  410. - (void)mapView:(MAMapView *)mapView mapWillMoveByUser:(BOOL)wasUserAction;
  411. /**
  412. * @brief 地图移动结束后调用此接口
  413. * @param mapView 地图view
  414. * @param wasUserAction 标识是否是用户动作
  415. */
  416. - (void)mapView:(MAMapView *)mapView mapDidMoveByUser:(BOOL)wasUserAction;
  417. /**
  418. * @brief 地图将要发生缩放时调用此接口
  419. * @param mapView 地图view
  420. * @param wasUserAction 标识是否是用户动作
  421. */
  422. - (void)mapView:(MAMapView *)mapView mapWillZoomByUser:(BOOL)wasUserAction;
  423. /**
  424. * @brief 地图缩放结束后调用此接口
  425. * @param mapView 地图view
  426. * @param wasUserAction 标识是否是用户动作
  427. */
  428. - (void)mapView:(MAMapView *)mapView mapDidZoomByUser:(BOOL)wasUserAction;
  429. /**
  430. * @brief 单击地图底图调用此接口
  431. * @param mapView 地图View
  432. * @param coordinate 点击位置经纬度
  433. */
  434. - (void)mapView:(MAMapView *)mapView didSingleTappedAtCoordinate:(CLLocationCoordinate2D)coordinate;
  435. /**
  436. * @brief 长按地图底图调用此接口
  437. * @param mapView 地图View
  438. * @param coordinate 长按位置经纬度
  439. */
  440. - (void)mapView:(MAMapView *)mapView didLongPressedAtCoordinate:(CLLocationCoordinate2D)coordinate;
  441. /**
  442. * @brief 根据anntation生成对应的View
  443. * @param mapView 地图View
  444. * @param annotation 指定的标注
  445. * @return 生成的标注View
  446. */
  447. - (MAAnnotationView*)mapView:(MAMapView *)mapView viewForAnnotation:(id <MAAnnotation>)annotation;
  448. /**
  449. * @brief 当mapView新添加annotation views时调用此接口
  450. * @param mapView 地图View
  451. * @param views 新添加的annotation views
  452. */
  453. - (void)mapView:(MAMapView *)mapView didAddAnnotationViews:(NSArray *)views;
  454. /**
  455. * @brief 当选中一个annotation views时调用此接口
  456. * @param mapView 地图View
  457. * @param view 选中的annotationView
  458. */
  459. - (void)mapView:(MAMapView *)mapView didSelectAnnotationView:(MAAnnotationView *)view;
  460. /**
  461. * @brief 当取消选中一个annotation views时调用此接口
  462. * @param mapView 地图View
  463. * @param view 取消选中的annotationView
  464. */
  465. - (void)mapView:(MAMapView *)mapView didDeselectAnnotationView:(MAAnnotationView *)view;
  466. /**
  467. * @brief 标注view的accessory view(必须继承自UIControl)被点击时调用此接口
  468. * @param mapView 地图View
  469. * @param view callout所属的标注view
  470. * @param control 对应的control
  471. */
  472. - (void)mapView:(MAMapView *)mapView annotationView:(MAAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control;
  473. /**
  474. * @brief 标注view的calloutview整体点击时调用此接口
  475. * @param mapView 地图的view
  476. * @param view calloutView所属的annotationView
  477. */
  478. - (void)mapView:(MAMapView *)mapView didAnnotationViewCalloutTapped:(MAAnnotationView *)view;
  479. /**
  480. * @brief 在地图View将要启动定位时调用此接口
  481. * @param mapView 地图View
  482. */
  483. - (void)mapViewWillStartLocatingUser:(MAMapView *)mapView;
  484. /**
  485. * @brief 在地图View停止定位后调用此接口
  486. * @param mapView 地图View
  487. */
  488. - (void)mapViewDidStopLocatingUser:(MAMapView *)mapView;
  489. /**
  490. * @brief 位置或者设备方向更新后调用此接口
  491. * @param mapView 地图View
  492. * @param userLocation 用户定位信息(包括位置与设备方向等数据)
  493. * @param updatingLocation 标示是否是location数据更新, YES:location数据更新 NO:heading数据更新
  494. */
  495. - (void)mapView:(MAMapView *)mapView didUpdateUserLocation:(MAUserLocation *)userLocation updatingLocation:(BOOL)updatingLocation;
  496. /**
  497. * @brief 定位失败后调用此接口
  498. * @param mapView 地图View
  499. * @param error 错误号,参考CLError.h中定义的错误号
  500. */
  501. - (void)mapView:(MAMapView *)mapView didFailToLocateUserWithError:(NSError *)error;
  502. /**
  503. * @brief 当userTrackingMode改变时调用此接口
  504. * @param mapView 地图View
  505. * @param mode 改变后的mode
  506. * @param animated 动画
  507. */
  508. - (void)mapView:(MAMapView *)mapView didChangeUserTrackingMode:(MAUserTrackingMode)mode animated:(BOOL)animated;
  509. /**
  510. * @brief 拖动annotation view时view的状态变化,ios3.2以后支持
  511. * @param mapView 地图View
  512. * @param view annotation view
  513. * @param newState 新状态
  514. * @param oldState 旧状态
  515. */
  516. - (void)mapView:(MAMapView *)mapView annotationView:(MAAnnotationView *)view didChangeDragState:(MAAnnotationViewDragState)newState fromOldState:(MAAnnotationViewDragState)oldState;
  517. /**
  518. * @brief 根据overlay生成对应的Renderer
  519. * @param mapView 地图View
  520. * @param overlay 指定的overlay
  521. * @return 生成的覆盖物Renderer
  522. */
  523. - (MAOverlayRenderer *)mapView:(MAMapView *)mapView rendererForOverlay:(id <MAOverlay>)overlay;
  524. /**
  525. * @brief 当mapView新添加overlay renderer时调用此接口
  526. * @param mapView 地图View
  527. * @param renderers 新添加的overlay renderers
  528. */
  529. - (void)mapView:(MAMapView *)mapView didAddOverlayRenderers:(NSArray *)renderers;
  530. #pragma mark - Deprecated
  531. - (MAOverlayView *)mapView:(MAMapView *)mapView viewForOverlay:(id <MAOverlay>)overlay __attribute__ ((deprecated("use - (MAOverlayRenderer *)mapView:(MAMapView *)mapView rendererForOverlay:(id <MAOverlay>)overlay instead")));
  532. - (void)mapView:(MAMapView *)mapView didUpdateUserLocation:(MAUserLocation *)userLocation __attribute__ ((deprecated("use -(void)mapView:(MAMapView *)mapView didUpdateUserLocation:(MAUserLocation *)userLocation updatingLocation:(BOOL)updatingLocation instead")));
  533. - (void)mapView:(MAMapView *)mapView didAddOverlayViews:(NSArray *)overlayViews __attribute__ ((deprecated("use - (void)mapView:(MAMapView *)mapView didAddOverlayRenderers:(NSArray *)renderers instead")));
  534. @end