接上一片博文,我们已经创建好了桥接文件.那么如何调用?
在项目最开始的时候,我写了这个项目使用cocoapod管理依赖库,在这里,还是多记录一下吧.
1 在你的已经安装好cocoapod的电脑上,打开终端,输入pod search baidumapapi ,得到的结果如下:
剪头中的就是我们需要的,然后在我们的项目中的podfile中把pod ‘BaiduMapAPI‘ ‘~>2.8.1‘加进去并且保存
2 加好了类库当然需要安装到项目中,所以输入pod install,等待安装完毕
3 重新打开项目,发现项目结构变成如下模样:
然后打开我们的桥接文件,引用百度地图的头文件
command + B 试试是否编译成功,成功就可进行下一步了.
4 本来项目开始应该进入的是首页,但是上面既然写了如何使用百度地图API,那么就直接写在这里,后面写到使用百度地图的页面就不写了..
代码如下:
① 首先在appdelegate里添加红色框框里的代码,里面剪头部分需要你到百度官网拿项目的bundle identify来生成一个key,不要按照我这个写啊
② 然后在控制器里代码如下:
import UIKit
class ViewController: UIViewController ,BMKMapViewDelegate ,BMKLocationServiceDelegate{
var mapView: BMKMapView!
var locService: BMKLocationService!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
mapView = BMKMapView(frame: self.view.frame) //创建地图的view
self.view = mapView //让百度地图的view成为控制器的view
//设置定位精准度
BMKLocationService.setLocationDesiredAccuracy(kCLLocationAccuracyBest)
//指定最小距离更新,单位是米
BMKLocationService.setLocationDistanceFilter(10)
//初始化定位服务
locService = BMKLocationService()
//启动定位服务
locService .startUserLocationService()
mapView.showsUserLocation = false
//设置位置跟踪态
mapView.userTrackingMode = BMKUserTrackingModeNone
//显示定位图层
mapView.showsUserLocation = true
//设置是否支持多点(缩放)
mapView .zoomEnabled = true
//手机比例尺中可以显示的级别 最高为19
mapView .zoomLevel = 19
}
//定位代理
//用户方向更改后
func didUpdateUserHeading(userLocation: BMKUserLocation!) {
mapView.updateLocationData(userLocation)
}
//位置更新后
func didUpdateBMKUserLocation(userLocation: BMKUserLocation!) {
mapView.updateLocationData(userLocation)
//移动定位的位置到屏幕中间
mapView .setCenterCoordinate(userLocation.location.coordinate, animated: true)
}
override func viewWillAppear(animated: Bool) {
mapView.viewWillAppear()
mapView.delegate = self //在控制器view将要显示的时候设置mapview以及定位的Locservice的代理为控制器
locService.delegate = self
}
override func viewWillDisappear(animated: Bool) {
mapView.viewWillDisappear()
mapView.delegate = nil //在控制器view将要消失的时候设置mapview以及定位的locservice的代理为nil ,具体原因去查看百度地图的api,里面有说明
locService.delegate = nil
}
5 代码写完之后,当你运行程序可能发现无法进行定位,那么这个有可能是你的plist文件少加入了一些东西,一起发上来;
这里二选一的,我选择的一直在后台运行,也可以选择另外一个属性,使用时候运行,至于key我不太记得了.自己在百度地图论坛可以找到.
这里顺带说一下,在iOS9之后,苹果开启了ATS,这个服务其实是需要https支撑的,估计苹果的目的也就是反向逼迫开发者们增强自己的APP安全,但是有时候公司是不想花钱去买那个HTTPS的证书,毕竟国人都喜欢免费的,有http可以用,为什么要一年花一两千去买个证书呢?所以这里有一个方法关闭ATS,也是在plist文件里添加.如下;
设置这个之后,一些AFN之类的第三方类库又可以正常使用了.
今天内容完毕..明天继续...