CedarMaps 3.4.1

CedarMaps 3.4.1

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布日期最新发布版2020年7月

Saeed TaheriCedarMaps维护。



 
依赖
Mapbox-iOS-SDK~> 5.0
Mantle~> 2.1
 

CedarMaps 3.4.1

CedarMaps iOS SDK

本指南将指导您将CedarMaps集成到您的iOS应用中。

本文件中提到的所有方法和工具均在Xcode 11上进行了测试。

目录

安装

CedarMaps通过CocoaPods提供。要安装它,只需将以下行添加到Podfile中,然后运行pod install

pod 'CedarMaps'

所需权限

如果您的应用需要访问位置服务,请在应用的 Info.plist 中添加对 NSLocationWhenInUseUsageDescription 的描述使用。

<key>NSLocationWhenInUseUsageDescription</key>
<string>THE REASON OF REQUESTING LOCATION</string>

配置 Cedarmaps

要使用 Cedarmaps 瓦片和工具,您需要一对在初始化 SDK 第一步使用的 clientIDclientSecret

AppDelegateapplicationDidFinishLaunchingWithOptions: 是初始化 Cedarmaps 的好地方。

[[CSMapKit sharedMapKit] setCredentialsWithClientID:@"CLIENT_ID" clientSecret:@"CLIENT_SECRET"];
CSMapKit.shared.setCredentialsWithClientID("CLIENT_ID", clientSecret: "CLIENT_SECRET")

更改 API 基本地址

如果您已收到 API 基本地址,可以在 CSMapKit 共享对象上设置它。

[[CSMapKit sharedMapKit] setAPIBaseURL:@"API_BASE_URL"];
CSMapKit.shared.setAPIBaseURL("API_BASE_URL")

Mapbox

CedarMaps SDK 基于 Mapbox iOS SDK,并在 Mapbox 上提供了额外的 API 方法。有关如何使用 Mapbox 组件和方法的更多信息(如 添加标记显示当前位置 等),请参阅 Mapbox 入门

CSMapView

如果您想使用 Cedarmaps 瓦片,需要多一步。完成以下代码片段后,您就可以使用 CSMapView 实例,它是 Mapbox MGLMapView 的子类,可以在Storyboard或代码中互换使用;它们不应混用。

[[CSMapKit sharedMapKit] prepareMapTiles:^(BOOL isReady, NSError * _Nullable error) {
    
}];
CSMapKit.shared.prepareMapTiles { isSuccesful, error in
                
}
更改地图样式

您可以将各种样式URL设置到CSMapView的实例中。

mapView.styleUrl = "STYLE_URL"

// Light Vector (Default): "CSMapViewStyleURLVectorLight"
// Dark Vector: "CSMapViewStyleURLVectorDark"
// Raster: "CSMapViewStyleURLRasterLight"

如果您有自己的基础URL,请确保使用扩展版本。

API 方法

除了使用 MapView 之外,您还可以使用 cedarMaps API 获取基于位置的 数据和街道搜索。

所有 API 调用都是异步的;它们不会阻塞主队列。完成处理程序都在主队列上调用。

您还可以在 CSMapKit.h 中查看所有方法的详细信息。以下是一些主要方法。

正向地理编码

对于查找街道或一些有限的POI,您可以轻松调用 geocode 方法。

- (void)geocodeAddressString:(nonnull NSString *)addressString
               inBoundingBox:(nonnull CSBoundingBox *)boundingBox
                    withType:(CSPlacemarkType)type
                       limit:(NSInteger)limit
           completionHandler:(nonnull CSForwardGeocodeCompletionHandler)completionHandler;
open func geocodeAddressString(_ addressString: String, in boundingBox: CSBoundingBox, with type: CSPlacemarkType, limit: Int, completionHandler: @escaping CSForwardGeocodeCompletionHandler)

在示例应用中还有更多高级的街道搜索可用。

逆向地理编码

您可以通过逆向地理编码API检索有关位置的详细信息。

- (void)reverseGeocodeLocation:(nonnull CLLocation *)location
             completionHandler:(nonnull CSReverseGeocodeCompletionHandler)completionHandler;
open func reverseGeocodeLocation(_ location: CLLocation, completionHandler: @escaping CSReverseGeocodeCompletionHandler)

方向

此方法可计算点之间的方向。在一个请求中,最多可以调用50个不同的点对。

- (void)calculateDirectionsFromSource:(nonnull CLLocation *)source toDestinations:(nonnull NSArray<CLLocation *> *)destinations withCompletionHandler:(nonnull CSDirectionCompletionHandler)completionHandler;
open func calculateDirections(fromSource: CLLocation, destinations: [CLLocation], withCompletionHandler completionHandler: @escaping CSDirectionCompletionHandler)

距离

此方法计算点之间的距离,单位为米。单个请求可调用最多15个不同点。

- (void)calculateDistance:(nonnull NSArray<CSRoutePair *> *)routePairs withCompletionHandler:(nonnull CSDirectionCompletionHandler)completionHandler;
open func calculateDistance(_ routePairs: [CSRoutePair], withCompletionHandler completionHandler: @escaping CSDirectionCompletionHandler)

静态地图图片

您可以使用以下代码片段请求所需地图视图的UIImage。您需要先创建一个CSMapSnapshotOptions来设置自定义属性。

CSMapSnapshotOptions *options = [[CSMapSnapshotOptions alloc] init];
options.center = [[CLLocation alloc] initWithLatitude:LATITUDE longitude:LONGITUDE];
options.zoomLevel = ZOOM_LEVEL;
options.size = CGSizeMake(WIDTH, HEIGHT);

[CSMapKit.sharedMapKit createMapSnapshotWithOptions:options withCompletionHandler:^(CSMapSnapshot * _Nullable snapshot, NSError * _Nullable error) {
    
}];
let options = CSMapSnapshotOptions()
options.center = CLLocation(latitude: LATITUDE, longitude: LONGITUDE)
options.zoomLevel = ZOOM_LEVEL
options.size = CGSize(width: WIDTH, height: HEIGHT)

CSMapKit.shared.createMapSnapshot(with: options) { (snapshot, error) in

}

可选地,您可以通过在CSMapSnapshotOptions实例上设置markers属性来指定要在地图上绘制的标记。

通过示例应用程序了解更多示例

要运行示例项目,首先克隆存储库,然后从Example目录运行pod install。然后,在CSAppDelegate.m文件中设置自己的clientIDclientSecret

示例项目是Swift和Objective-C的混合体。