您当前的位置: iossdk > guide > swift
swift

配置开发环境

第一步、导入地图SDK,参考配置开发环境

第二步、Swift编译配置

首先,新建桥接头文件(放在工程目录下),这里命名为 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 Phases-> Swift Compiler - Code Generation -> Objective-C Briding Header 中输入桥接文件的路径(该路径要和桥接头文件所在的目录一致),如下图所示: 99d9909504723c336a9c1e7205129d62.PNG

Hello Swift BaiduMap

一、初始化BMKMapManager 在您的AppDelegate.swift文件中添加对BMKMapManager的声明和初始化,并填入您申请的授权Key,示例如下

var _mapManager: BMKMapManager?
 
    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        _mapManager = BMKMapManager()
        // 如果要关注网络及授权验证事件,请设定generalDelegate参数
        let ret = _mapManager?.start("在此处输入您的授权Key", generalDelegate: self)
        if ret == false {
            NSLog("manager start failed!")
        }
        return true
}

二、创建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起,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
    }

三、编译,运行,效果如下图所示:

1d7104f0542ea9b5e2e0b636ceab7d67.PNG