浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。

iOS 地图SDK

百度地图SDK是一套应用程序接口, 通过调用地图SDK接口,开发者可以轻松访问百度地图的服务和数据,构建功能丰富、交互性强的地图类应用程序。

配置开发环境
1导入地图SDK
参考使用CocoaPods自动配置 或者 手动配置.framework形式开发包。
不论是自动配置还是手动配置,Object C 和 Swift导入地图SDK的方式一致。
2Swift编译配置
首先,新建桥接头文件(放在工程目录下),这里命名为 BMKSwiftDemo-Bridging-Header.h,在该头文件中import需要的库文件,代码如下:
#import <BaiduMapAPI_Base/BMKBaseComponent.h>//引入base相关所有的头文件
#import <BaiduMapAPI_Map/BMKMapComponent.h>//引入地图功能所有的头文件
#import <BaiduMapAPI_Search/BMKSearchComponent.h>//引入检索功能所有的头文件
#import <BaiduMapAPI_Cloud/BMKCloudSearchComponent.h>//引入云检索功能所有的头文件
#import <BaiduMapAPI_Location/BMKLocationComponent.h>//引入定位功能所有的头文件
#import <BaiduMapAPI_Utils/BMKUtilsComponent.h>//引入计算工具所有的头文件
#import <BaiduMapAPI_Radar/BMKRadarComponent.h>//引入周边雷达功能所有的头文件
#import < BaiduMapAPI_Map/BMKMapView.h>//只引入所需的单个头文件

然后,在 TARGETS->Build Settings->Swift Compiler -> General -> Objective-C Briding Header 中输入桥接文件的路径(该路径要和桥接头文件所在的目录一致),如下图所示:

ios-swift1.png

Hello Swift BaiduMap
1初始化BMKMapManager
在您的AppDelegate.swift文件中添加对BMKMapManager的声明和初始化,并填入您申请的授权Key,示例如下
var _mapManager: BMKMapManager?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        _mapManager = BMKMapManager()
        // 如果要关注网络及授权验证事件,请设定generalDelegate参数
        let ret = _mapManager?.start("在此处输入您的授权Key", generalDelegate: self)
        if ret == false {
            NSLog("manager start failed!")
        }
        return true
}
2创建BMKMapView
在您的ViewController.swift文件中添加BMKMapView的创建代码,示例如下
var _mapView: BMKMapView?
    override func viewDidLoad() {
        super.viewDidLoad()
        _mapView = BMKMapView(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height))
        self.view.addSubview(_mapView!)
    }
注意:自2.0.0起,新增viewWillAppear、viewWillDisappear方法来控制BMKMapView的生命周期。
BMKMapView新增viewWillAppear、viewWillDisappear方法来控制BMKMapView的生命周期,并且在一个时刻只能有一个BMKMapView接受回调消息,因此在使用BMKMapView的viewController中需要在viewWillAppear、viewWillDisappear方法中调用BMKMapView的对应的方法,并处理delegate,代码如下:
override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        _mapView?.viewWillAppear()
        _mapView?.delegate = self // 此处记得不用的时候需要置nil,否则影响内存的释放
}
 
override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        _mapView?.viewWillDisappear()
        _mapView?.delegate = nil // 不用时,置nil
}  
3编译,运行
效果如下图所示:
ios-swift2.png