新增景区权限模块,集成 AMap CocoaPods 并支持模拟器

将景区选择与权限申请流程接入首页路由,集成高德 SDK 用于真机构建,并通过 Podfile post_install 钩子保证 arm64 模拟器可编译。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-23 10:15:26 +08:00
parent 5d4613f317
commit b61bf0d070
416 changed files with 18641 additions and 38 deletions

View File

@ -0,0 +1,74 @@
//
// AMapFoundationConst.h
// AMapFoundationKit
//
// Created by JL on 2019/7/22.
// Copyright © 2019 Amap.com. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
typedef NSInteger AMapFoundationNSErrorCode;
//ErrorDomain:文件不存在 错误码:-555555
extern NSErrorDomain const AMapFoundationNSErrorFileDonotExist;
extern AMapFoundationNSErrorCode const AMapFoundationNSErrorFileDonotExistCode;
//ErrorDomain:文件路径不合法 错误码:-555556
extern NSErrorDomain const AMapFoundationNSErrorFilePathInvaild;
extern AMapFoundationNSErrorCode const AMapFoundationNSErrorFilePathInvaildCode;
//ErrorDomain:指定类型的日志文件不存在 错误码:-555557
extern NSErrorDomain const AMapFoundationNSErrorTypeLogDonotExist;
extern AMapFoundationNSErrorCode const AMapFoundationNSErrorTypeLogDonotExistCode;
//ErrorDomain:待上传的数据为空(可能是组装/压缩时出错) 错误码:-555558
extern NSErrorDomain const AMapFoundationNSErrorUploadDataIsEmpty;
extern AMapFoundationNSErrorCode const AMapFoundationNSErrorUploadDataIsEmptyCode;
//ErrorDomain:参数错误 错误码:-444444
extern NSErrorDomain const AMapFoundationNSErrorParametersInvalid;
extern AMapFoundationNSErrorCode const AMapFoundationNSErrorParametersInvalidCode;
extern NSErrorDomain const AMapFoundationNSErrorCloudConfigDisable;
extern AMapFoundationNSErrorCode const AMapFoundationNSErrorCloudConfigDisableCode;
extern NSErrorDomain const AMapFoundationNSErrorNetworkUnusable;
extern AMapFoundationNSErrorCode const AMapFoundationNSErrorNetworkUnusableCode;
extern NSErrorDomain const AMapFoundationNSErrorCurrentworkIsRunning;
extern AMapFoundationNSErrorCode const AMapFoundationNSErrorCurrentworkIsRunningCode;
extern NSErrorDomain const AMapFoundationNSErrorCurrentUploadSizeHaveExcess;
extern AMapFoundationNSErrorCode const AMapFoundationNSErrorCurrentUploadSizeHaveExcessCode;
extern NSErrorDomain const AMapFoundationErrorPrivacyShowUnknow;
extern AMapFoundationNSErrorCode const AMapFoundationErrorPrivacyShowUnknowCode;
extern NSErrorDomain const AMapFoundationErrorPrivacyShowNoShow;
extern AMapFoundationNSErrorCode const AMapFoundationErrorPrivacyShowNoShowCode;
extern NSErrorDomain const AMapFoundationErrorPrivacyInfoUnknow;
extern AMapFoundationNSErrorCode const AMapFoundationErrorPrivacyInfoUnknowCode;
extern NSErrorDomain const AMapFoundationErrorPrivacyInfoNotContain;
extern AMapFoundationNSErrorCode const AMapFoundationErrorPrivacyInfoNotContainCode;
extern NSErrorDomain const AMapFoundationErrorPrivacyAgreeUnknow;
extern AMapFoundationNSErrorCode const AMapFoundationErrorPrivacyAgreeUnknowCode;
extern NSErrorDomain const AMapFoundationErrorPrivacyAgreeNotAgreee;
extern AMapFoundationNSErrorCode const AMapFoundationErrorPrivacyAgreeNotAgreeeCode;
extern NSErrorDomain const AMapFoundationErrorBikeLicenseDontAuth;
extern AMapFoundationNSErrorCode const AMapFoundationErrorBikeLicenseDontAuthCode;
extern NSErrorDomain const AMapFoundationErrorInvaildUserKey;
extern AMapFoundationNSErrorCode const AMapFoundationErrorInvaildUserKeyCode;
NS_ASSUME_NONNULL_END

View File

@ -0,0 +1,20 @@
//
// AMapFoundationKit.h
// AMapFoundationKit
//
// Created by xiaoming han on 15/10/28.
// Copyright © 2015年 Amap. All rights reserved.
//
#import <AMapFoundationKit/AMapFoundationVersion.h>
#import <AMapFoundationKit/AMapServices.h>
#import <AMapFoundationKit/AMapURLSearchConfig.h>
#import <AMapFoundationKit/AMapURLSearchType.h>
#import <AMapFoundationKit/AMapURLSearch.h>
#import <AMapFoundationKit/AMapFoundationConst.h>
#import <AMapFoundationKit/AMapUtility.h>
#if __has_include(<AMapFoundationKit/AMapLicenseManager.h>)
#import <AMapFoundationKit/AMapLicenseManager.h>
#endif

View File

@ -0,0 +1,19 @@
//
// AMapFoundationVersion.h
// AMapFoundation
//
// Created by xiaoming han on 15/10/26.
// Copyright © 2015年 Amap. All rights reserved.
//
#import <Foundation/Foundation.h>
#ifndef AMapFoundationVersion_h
#define AMapFoundationVersion_h
#define AMapFoundationVersionNumber 10807
FOUNDATION_EXTERN NSString * const AMapFoundationVersion;
FOUNDATION_EXTERN NSString * const AMapFoundationName;
#endif /* AMapFoundationVersion_h */

View File

@ -0,0 +1,160 @@
//
// AMapSearchServices.h
// AMapSearchKit
//
// Created by xiaoming han on 15/6/18.
// Copyright (c) 2015年 xiaoming han. All rights reserved.
//
#import <Foundation/Foundation.h>
//语言类型 language type
typedef NS_ENUM(int, AMapRegionLanguageType)
{
/// 简体中文 (Simplified Chinese)
AMapRegionLanguageTypeZhHans = 0,
/// 香港繁体中文 (Traditional Chinese - Hong Kong)
AMapRegionLanguageTypeZhHantHk,
/// 英文 (English)
AMapRegionLanguageTypeEn,
/// 西班牙语 (Spanish)
AMapRegionLanguageTypeEs,
/// 葡萄牙语 (Portuguese)
AMapRegionLanguageTypePt,
/// 法语 (French)
AMapRegionLanguageTypeFr,
/// 德语 (German)
AMapRegionLanguageTypeDe,
/// 泰语 (Thai)
AMapRegionLanguageTypeTh,
/// 日语 (Japanese)
AMapRegionLanguageTypeJa,
/// 韩语 (Korean)
AMapRegionLanguageTypeKo,
/// 阿拉伯语 (Arabic)
AMapRegionLanguageTypeAr,
/// 土耳其语 (Turkish)
AMapRegionLanguageTypeTr,
/// 希伯来语 (Hebrew)
AMapRegionLanguageTypeHe,
/// 意大利语 (Italian)
AMapRegionLanguageTypeIt,
/// 俄语 (Russian)
AMapRegionLanguageTypeRu,
/// 马来语 (Malay)
AMapRegionLanguageTypeMs,
/// 印尼语 (Indonesian)
AMapRegionLanguageTypeId,
/// 越南语 (Vietnamese)
AMapRegionLanguageTypeVi,
/// 波兰语 (Polish)
AMapRegionLanguageTypePl,
/// 捷克语 (Czech)
AMapRegionLanguageTypeCs,
/// 乌克兰语 (Ukrainian)
AMapRegionLanguageTypeUk,
/// 阿塞拜疆语 (Azerbaijani)
AMapRegionLanguageTypeAz,
/// 最大值标识 (Max Value Marker)
AMapRegionLanguageTypeMax
};
/**
* 是否为海外用户...海外用户,SDK内部会屏蔽一些操作 默认为NO.
* @warning AMapServices初始化之前,设置才能生效
*/
extern BOOL _amapLocationOverseas;
// 显示隐私弹窗状态 -1: unknow , 0 : 未显示 1 已显示
typedef NS_ENUM(NSInteger, AMapPrivacyShowStatus)
{
AMapPrivacyShowStatusUnknow = -1,
AMapPrivacyShowStatusNotShow = 0,
AMapPrivacyShowStatusDidShow = 1,
};
// 集成SDK隐私信息状态 -1: unknow , 0 : 未集成 1 已集成
typedef NS_ENUM(NSInteger, AMapPrivacyInfoStatus)
{
AMapPrivacyInfoStatusUnknow = -1,
AMapPrivacyInfoStatusNotContain = 0,
AMapPrivacyInfoStatusDidContain = 1,
};
// 用户同意隐私状态 -1: unknow , 0 : 未同意 1 已同意
typedef NS_ENUM(NSInteger, AMapPrivacyAgreeStatus)
{
AMapPrivacyAgreeStatusUnknow = -1,
AMapPrivacyAgreeStatusNotAgree = 0,
AMapPrivacyAgreeStatusDidAgree = 1,
};
///高德SDK服务类
@interface AMapServices : NSObject
/**
* @brief 获取单例
*/
+ (AMapServices *)sharedServices;
///APIkey。设置key需要在高德官网控制台绑定对应的bundleid。
@property (nonatomic, copy) NSString *apiKey;
///是否开启HTTPS从1.3.3版本开始默认为YES。
@property (nonatomic, assign) BOOL enableHTTPS;
///域名是否是海外环境, YES 代表海外, 默认是NO。
///需要在初始化SDK前设置。
- (void)setIsOverseas:(BOOL)isOverseas;
///语言类型
///language type
@property (nonatomic, assign) AMapRegionLanguageType regionLanguageType;
///是否启用崩溃日志上传。默认为YES, 只有在真机上设置有效。\n开启崩溃日志上传有助于我们更好的了解SDK的状况可以帮助我们持续优化和改进SDK。需要注意的是SDK内部是通过设置NSUncaughtExceptionHandler来捕获异常的如果您的APP中使用了其他收集崩溃日志的SDK或者自己有设置NSUncaughtExceptionHandler的话请保证 AMapServices 的初始化是在其他设置NSUncaughtExceptionHandler操作之后进行的我们的handler会再处理完异常后调用前一次设置的handler保证之前设置的handler会被执行。
@property (nonatomic, assign) BOOL crashReportEnabled __attribute__((deprecated("从v1.5.7开始废弃,调用无任何作用")));
///设备标识取自idfv。用于排查问题时提供。
@property (nonatomic, readonly) NSString *identifier;
///用户是否同意数据用于安全保障。默认为YES。since 1.8.7
///Whether the user agrees to use data for security assurance. Default: YES. Since 1.8.7
@property (nonatomic, assign) BOOL securityAgree;
///用户是否同意数据用于统计分析。默认为YES。since 1.8.7
///Whether the user agrees to use data for statistical analysis. Default: YES. Since 1.8.7
@property (nonatomic, assign) BOOL analysisAgree;
///当前位置经度。since 1.8.7
///Current location longitude. Since 1.8.7
@property (nonatomic, assign) double longitude;
///当前位置纬度。since 1.8.7
///Current location latitude. Since 1.8.7
@property (nonatomic, assign) double latitude;
@end

View File

@ -0,0 +1,41 @@
//
// AMapURLSearch.h
// AMapFoundation
//
// Created by xiaoming han on 15/10/28.
// Copyright © 2015年 Amap. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "AMapURLSearchConfig.h"
///调起高德地图URL进行搜索若是调起失败可使用`+ (void)getLatestAMapApp;`方法获取最新版高德地图app.
@interface AMapURLSearch : NSObject
/**
* @brief 打开高德地图AppStore页面
*/
+ (void)getLatestAMapApp;
/**
* @brief 调起高德地图app驾车导航.
* @param config 配置参数.
* @return 是否成功.若为YES则成功调起若为NO则无法调起.
*/
+ (BOOL)openAMapNavigation:(AMapNaviConfig *)config;
/**
* @brief 调起高德地图app进行路径规划.
* @param config 配置参数.
* @return 是否成功.
*/
+ (BOOL)openAMapRouteSearch:(AMapRouteConfig *)config;
/**
* @brief 调起高德地图app进行POI搜索.
* @param config 配置参数.
* @return 是否成功.
*/
+ (BOOL)openAMapPOISearch:(AMapPOIConfig *)config;
@end

View File

@ -0,0 +1,79 @@
//
// MAMapURLSearchConfig.h
// MAMapKitNew
//
// Created by xiaoming han on 15/5/25.
// Copyright (c) 2015年 xiaoming han. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <CoreLocation/CoreLocation.h>
#import "AMapURLSearchType.h"
///导航配置信息
@interface AMapNaviConfig : NSObject
///应用返回的Scheme
@property (nonatomic, copy) NSString *appScheme;
///应用名称
@property (nonatomic, copy) NSString *appName;
///终点
@property (nonatomic, assign) CLLocationCoordinate2D destination;
///导航策略
@property (nonatomic, assign) AMapDrivingStrategy strategy;
@end
#pragma mark -
///路径搜索配置信息
@interface AMapRouteConfig : NSObject
///应用返回的Scheme
@property (nonatomic, copy) NSString *appScheme;
///应用名称
@property (nonatomic, copy) NSString *appName;
///起点坐标
@property (nonatomic, assign) CLLocationCoordinate2D startCoordinate;
///终点坐标
@property (nonatomic, assign) CLLocationCoordinate2D destinationCoordinate;
///驾车策略
@property (nonatomic, assign) AMapDrivingStrategy drivingStrategy;
///公交策略
@property (nonatomic, assign) AMapTransitStrategy transitStrategy;
///路径规划类型
@property (nonatomic, assign) AMapRouteSearchType routeType;
@end
#pragma mark -
///POI搜索配置信息
@interface AMapPOIConfig : NSObject
///应用返回的Scheme
@property (nonatomic, copy) NSString *appScheme;
///应用名称
@property (nonatomic, copy) NSString *appName;
///搜索关键字
@property (nonatomic, copy) NSString *keywords;
///左上角坐标
@property (nonatomic, assign) CLLocationCoordinate2D leftTopCoordinate;
///右下角坐标
@property (nonatomic, assign) CLLocationCoordinate2D rightBottomCoordinate;
@end

View File

@ -0,0 +1,44 @@
//
// MAMapURLSearchType.h
// MAMapKitNew
//
// Created by xiaoming han on 15/5/25.
// Copyright (c) 2015年 xiaoming han. All rights reserved.
//
///驾车策略
typedef NS_ENUM(NSInteger, AMapDrivingStrategy)
{
AMapDrivingStrategyFastest = 0, ///<速度最快
AMapDrivingStrategyMinFare = 1, ///<避免收费
AMapDrivingStrategyShortest = 2, ///<距离最短
AMapDrivingStrategyNoHighways = 3, ///<不走高速
AMapDrivingStrategyAvoidCongestion = 4, ///<躲避拥堵
AMapDrivingStrategyAvoidHighwaysAndFare = 5, ///<不走高速且避免收费
AMapDrivingStrategyAvoidHighwaysAndCongestion = 6, ///<不走高速且躲避拥堵
AMapDrivingStrategyAvoidFareAndCongestion = 7, ///<躲避收费和拥堵
AMapDrivingStrategyAvoidHighwaysAndFareAndCongestion = 8 ///<不走高速躲避收费和拥堵
};
///公交策略
typedef NS_ENUM(NSInteger, AMapTransitStrategy)
{
AMapTransitStrategyFastest = 0,///<最快捷
AMapTransitStrategyMinFare = 1,///<最经济
AMapTransitStrategyMinTransfer = 2,///<最少换乘
AMapTransitStrategyMinWalk = 3,///<最少步行
AMapTransitStrategyMostComfortable = 4,///<最舒适
AMapTransitStrategyAvoidSubway = 5,///<不乘地铁
};
///路径规划类型
typedef NS_ENUM(NSInteger, AMapRouteSearchType)
{
AMapRouteSearchTypeDriving = 0, ///<驾车
AMapRouteSearchTypeTransit = 1, ///<公交
AMapRouteSearchTypeWalking = 2, ///<步行
};

View File

@ -0,0 +1,50 @@
//
// AMapUtility.h
// AMapFoundation
//
// Created by xiaoming han on 15/10/27.
// Copyright © 2015年 Amap. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <CoreLocation/CoreLocation.h>
//工具方法
/**
* @brief 如果字符串为nil则返回空字符串
*/
FOUNDATION_STATIC_INLINE NSString * AMapEmptyStringIfNil(NSString *s)
{
return s ? s : @"";
}
///坐标类型枚举
typedef NS_ENUM(NSInteger, AMapCoordinateType)
{
AMapCoordinateTypeAMap = -1, ///<AMap
AMapCoordinateTypeBaidu = 0, ///<Baidu
AMapCoordinateTypeMapBar, ///<MapBar
AMapCoordinateTypeMapABC, ///<MapABC
AMapCoordinateTypeSoSoMap, ///<SoSoMap
AMapCoordinateTypeAliYun, ///<AliYun
AMapCoordinateTypeGoogle, ///<Google
AMapCoordinateTypeGPS, ///<GPS
};
/**
* @brief 转换目标经纬度为高德坐标系,不在枚举范围内的经纬度将直接返回。
* @param coordinate 待转换的经纬度
* @param type 坐标系类型
* @return 高德坐标系经纬度
*/
FOUNDATION_EXTERN CLLocationCoordinate2D AMapCoordinateConvert(CLLocationCoordinate2D coordinate, AMapCoordinateType type);
/**
* @brief 判断目标经纬度处是否有高德数据。输入参数为高德坐标系。此方法为粗略判断,在边界地区可能会不准确。
* @param coordinate 待判断的目标经纬度
* @return 布尔值。YES:有数据NO:没数据
*/
FOUNDATION_EXTERN BOOL AMapDataAvailableForCoordinate(CLLocationCoordinate2D coordinate);