Mapbox Maps SDK for iOS 是一个开源框架,用于将可缩放、可定制的矢量地图嵌入到 iOS 8.0 及以上版本的 Cocoa Touch 应用程序中,可以使用 Objective-C、Swift 或 Interface Builder。它使用符合Mapbox 样式规范的样式表,将其应用于符合Mapbox 向量瓦片规范的向量瓦片,并使用 OpenGL 进行渲染。
有关更多信息,请参阅Mapbox Maps SDK for iOS 主页和完整更改日志在线文档。
Mapbox Maps SDK for iOS 可以作为动态框架或静态框架安装。(为了减少下载大小,某些发行版本中省略了静态框架;您可能需要从发行页面下载完整包。)
要将 Mapbox Maps SDK for iOS 集成到应用程序中,需要 Xcode 8.0 或更高版本。要使用此 SDK 与 Xcode 7.3.1,请从发行页面下载并使用符号构建。
这是手动将 SDK 集成到应用程序中的推荐工作流程
打开项目编辑器,选择您应用程序的目标,然后转到“通用”选项卡。将 Mapbox.framework 从“动态”文件夹拖动到“嵌入式二进制”部分。(不要将其拖动到“链接框架和库”部分;Xcode 将自动将其添加到那里。)在出现的表格中,确保已勾选“如果需要则复制项”,然后单击完成。
在“构建阶段”选项卡中,单击顶部的+按钮,然后选择“新运行脚本阶段”。将以下代码输入到脚本文本字段中
bash "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/Mapbox.framework/strip-frameworks.sh"
(最后一步,得益于Realm,用于解决iOS 应用商店漏洞。)
Mapbox 向量瓦片需要一个 Mapbox 账户和 API 访问令牌。在项目编辑器中,选择应用程序目标,然后转到“信息”选项卡。在“自定义 iOS 目标属性”部分下,将 MGLMapboxAccessToken
设置为您的访问令牌。您可以从Mapbox 账户页面获取访问令牌。
为了在地图上显示用户的当前位置,SDK 必须请求用户授权访问位置服务。前往项目编辑器的“信息”标签页。如果您的应用程序支持 iOS 7,将 NSLocationUsageDescription
键设置为一条信息,向用户说明位置信息用于什么目的。如果您的应用程序支持 iOS 8 及以上版本,则将 NSLocationAlwaysUsageDescription
和/或 NSLocationWhenInUseUsageDescription
键设置为该条信息。
(可选) Mapbox Telemetry 是一个强大的位置分析平台,包含在此 SDK 中。[链接](https://www.mapbox.com/telemetry/)。默认情况下,当应用程序引起收集时,匿名位置和用法数据会发送到 Mapbox。此 SDK 为用户提供了一种退出 Mapbox Telemetry 的方式。您也可以使用设置包将退出设置添加到应用程序的设置屏幕。此 SDK 中提供了一个示例 Settings.bundle;当提示时将其拖动到“项目导航器”,并检查“如果需要则复制项目”。在项目编辑器中,确认以下更改已自动发生
在故事板或 XIB 中,将一个视图添加到您的视图控制器中。(将“视图”从对象库拖动到界面构建器画布上的视图控制器场景。)在“标识符检查器”中,将视图的个性化类设置为 MGLMapView
。如果您需要以编程方式操作地图视图
Mapbox
模块。// ViewController.m
@import Mapbox;
@interface ViewController : UIViewController
@property (strong) IBOutlet MGLMapView *mapView;
@end
// ViewController.swift
import Mapbox
class ViewController: UIViewController {
@IBOutlet var mapView: MGLMapView!
}
完整的 API 文档包含在包内的 documention
文件夹中。有关更多详情,请阅读“[在使用 Mapbox Maps SDK for iOS 的第一步](https://www.mapbox.com/help/first-steps-ios-sdk/)”和查阅[在线示例](https://www.mapbox.com/ios-sdk/examples/)。
如果您有任何疑问,请访问[我们的帮助页面](https://www.mapbox.com/help/)。我们欢迎您的[错误报告、功能请求和贡献](https://github.com/mapbox/mapbox-gl-native/issues/)。