169 lines
5.2 KiB
Objective-C
169 lines
5.2 KiB
Objective-C
//
|
||
// DDMAMapView.h
|
||
// DDMAMapKit_Private
|
||
// Created by DDIsFriend on 2023/1/30.
|
||
|
||
|
||
#import <UIKit/UIKit.h>
|
||
#import <AMapNaviKit/MAMapKit.h>
|
||
#import <DDMAMapKit_Private/MATraceReplayOverlay.h>
|
||
#import <DDMAMapKit_Private/MATraceReplayOverlayRender.h>
|
||
|
||
NS_ASSUME_NONNULL_BEGIN
|
||
|
||
@protocol DDMAMapViewDelegate;
|
||
@class DDAnnotationView;
|
||
@class DDAnnotation;
|
||
|
||
@interface DDMAMapView : UIView
|
||
@property (nonatomic, strong, nonnull)MAMapView *maMapView;
|
||
|
||
@property (nonatomic, weak)id<DDMAMapViewDelegate> delegate;
|
||
|
||
// 请在使用该类前先设置appkey
|
||
+ (void)startWithAppKey:(nullable NSString *)appKey;
|
||
|
||
// 在创建该类实例前调用
|
||
+ (void)agreePrivacy;
|
||
|
||
- (MAOverlayRenderer *)dd_rendererForOverlay:(id <MAOverlay>)overlay;
|
||
@end
|
||
|
||
@interface DDMAMapView (Location)
|
||
|
||
/// @brief 用户当前位置的属性
|
||
@property (nonatomic, readonly)MAUserLocation *maUserLocation;
|
||
|
||
/// @brief 调用此方法来自定义当前位置小蓝点
|
||
- (void)updateLocationViewWithParam:(MAUserLocationRepresentation *)representation;
|
||
|
||
@end
|
||
|
||
@interface DDMAMapView (Trace)
|
||
|
||
@property (nonatomic, strong)MATraceReplayOverlay *traceReplayOverlay;
|
||
|
||
@property (nonatomic, strong)MATraceReplayOverlayRenderer *traceReplayOverlayRenderer;
|
||
|
||
@end
|
||
|
||
@protocol DDMAMapViewDelegate <NSObject>
|
||
|
||
@optional
|
||
|
||
/**
|
||
* @brief 地图开始加载
|
||
* @param mapView 地图View
|
||
*/
|
||
- (void)dd_mapViewWillStartLoadingMap:(MAMapView *)mapView;
|
||
|
||
/**
|
||
* @brief 地图加载成功
|
||
* @param mapView 地图View
|
||
*/
|
||
- (void)dd_mapViewDidFinishLoadingMap:(MAMapView *)mapView;
|
||
|
||
/**
|
||
* @brief 地图加载失败
|
||
* @param mapView 地图View
|
||
* @param error 错误信息
|
||
*/
|
||
- (void)dd_mapViewDidFailLoadingMap:(MAMapView *)mapView withError:(NSError *)error;
|
||
|
||
/**
|
||
* @brief 地形图加载失败
|
||
* @param mapView 地图View
|
||
* @param error 错误信息
|
||
*/
|
||
- (void)dd_mapView:(MAMapView *)mapView didFailLoadTerrainWithError:(NSError *)error;
|
||
|
||
/**
|
||
* @brief 地图将要发生缩放时调用此接口
|
||
* @param mapView 地图view
|
||
* @param wasUserAction 标识是否是用户动作
|
||
*/
|
||
- (void)dd_mapView:(MAMapView *)mapView mapWillZoomByUser:(BOOL)wasUserAction;
|
||
|
||
/**
|
||
* @brief 地图缩放结束后调用此接口
|
||
* @param mapView 地图view
|
||
* @param wasUserAction 标识是否是用户动作
|
||
*/
|
||
- (void)dd_mapView:(MAMapView *)mapView mapDidZoomByUser:(BOOL)wasUserAction;
|
||
|
||
/**
|
||
* @brief 在地图View将要启动定位时,会调用此函数
|
||
* @param mapView 地图View
|
||
*/
|
||
- (void)dd_mapViewWillStartLocatingUser:(MAMapView *)mapView;
|
||
|
||
/**
|
||
* @brief 在地图View停止定位后,会调用此函数
|
||
* @param mapView 地图View
|
||
*/
|
||
- (void)dd_mapViewDidStopLocatingUser:(MAMapView *)mapView;
|
||
|
||
/**
|
||
* @brief 位置或者设备方向更新后,会调用此函数
|
||
* @param mapView 地图View
|
||
* @param userLocation 用户定位信息(包括位置与设备方向等数据)
|
||
* @param updatingLocation 标示是否是location数据更新, YES:location数据更新 NO:heading数据更新
|
||
*/
|
||
- (void)dd_mapView:(MAMapView *)mapView didUpdateUserLocation:(MAUserLocation *)userLocation updatingLocation:(BOOL)updatingLocation;
|
||
|
||
/**
|
||
* @brief 当plist配置NSLocationAlwaysUsageDescription或者NSLocationAlwaysAndWhenInUseUsageDescription,并且[CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined,会调用代理的此方法。
|
||
此方法实现调用后台权限API即可( 该回调必须实现 [locationManager requestAlwaysAuthorization] ); since 6.8.0
|
||
* @param locationManager 地图的CLLocationManager。
|
||
*/
|
||
- (void)dd_mapViewRequireLocationAuth:(CLLocationManager *)locationManager;
|
||
|
||
/**
|
||
* @brief 定位失败后,会调用此函数
|
||
* @param mapView 地图View
|
||
* @param error 错误号,参考CLError.h中定义的错误号
|
||
*/
|
||
- (void)dd_mapView:(MAMapView *)mapView didFailToLocateUserWithError:(NSError *)error;
|
||
|
||
/**
|
||
* @brief 根据anntation生成对应的View。
|
||
|
||
注意:
|
||
1、5.1.0后由于定位蓝点增加了平滑移动功能,如果在开启定位的情况先添加annotation,需要在此回调方法中判断annotation是否为MAUserLocation,从而返回正确的View。
|
||
if ([annotation isKindOfClass:[MAUserLocation class]]) {
|
||
return nil;
|
||
}
|
||
|
||
2、请不要在此回调中对annotation进行select和deselect操作,此时annotationView还未添加到mapview。
|
||
|
||
* @param mapView 地图View
|
||
* @param annotation 指定的标注
|
||
* @return 生成的标注View
|
||
*/
|
||
- (MAAnnotationView *)dd_mapView:(MAMapView *)mapView viewForAnnotation:(id <MAAnnotation>)annotation;
|
||
|
||
/**
|
||
* @brief 根据overlay生成对应的Renderer
|
||
* @param mapView 地图View
|
||
* @param overlay 指定的overlay
|
||
* @return 生成的覆盖物Renderer
|
||
*/
|
||
- (MAOverlayRenderer *)dd_mapView:(MAMapView *)mapView rendererForOverlay:(id <MAOverlay>)overlay;
|
||
|
||
/**
|
||
* @brief 标注view被点击时,触发该回调。(since 5.7.0)
|
||
* @param mapView 地图的view
|
||
* @param view annotationView
|
||
*/
|
||
- (void)dd_mapView:(MAMapView *)mapView didAnnotationViewTapped:(MAAnnotationView *)view;
|
||
|
||
/**
|
||
* @brief 当mapView新添加overlay renderers时,调用此接口
|
||
* @param mapView 地图View
|
||
* @param overlayRenderers 新添加的overlay renderers
|
||
*/
|
||
- (void)dd_mapView:(MAMapView *)mapView didAddOverlayRenderers:(NSArray *)overlayRenderers;
|
||
|
||
@end
|
||
NS_ASSUME_NONNULL_END
|