Files
OrderScheduling/Pods/DDMAMapKit_Private/DDMAMapKit_Private/Classes/DDMAMap/MapView/DDMAMapView.h
T

169 lines
5.2 KiB
Objective-C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
//
// 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 UI_APPEARANCE_SELECTOR;
@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