1.MapKit: 着重与在手机上显示地图,地图上可以显示路线,覆盖层,大头针
2.如何添加大头针:
#**需要自定义,因为用户的大头针位置是无法改变
#**自定义注意点:
#****要遵守MKAnnotation这个协议
#****实现这个协议必须实现的方法
#****可以给协议增加方法,以达到设置这个属性的值
#**创建大头针
#**设置经纬度(title, subTitle)
#**添加到地图上面
3.大头针的理论基础
#**操作大头针就是操作大头针数据模型
#**添加大头针就是添加大头针的数据模型
#**删除大头针就是删除大头针的数据模型
4.大头针是如何显示出来的
#**当将一根大头针的数据模型添加到地图上时,会调用对应的代理方法,在内部创建大头针视图并返回,之后显示在地图上
#**系统默认的大头针的视图的类型MKPinAnnotationView
一.代码:01-01(掌握)地图的基本使用(显示类型&地图控制&显示控制) // POI: point of intreset
七.代码: 07-01(了解)导航-方案3-第三方-百度地图-集成百度地图SDK(百度开发平台模块: iOS地图SDK)
# 1.生成秘钥key: "iA5UyEGFTdQ4iFe6FGdeGryhjPfpUXFm
# 2.配置inf.plist文件: 01."App Transport Security Settings"&&"Allow Arbitrary Loads"
# 02."Privacy - Location When In Use Usage Description"--"地图定位测试"
# 或者"NSLocationAlwaysUsageDescription"--"地图定位测试"
# 03."Bundle display name"--"$(PRODUCT_NAME)"
# 04.添加系统以来库: // CoreLocation.framework
// QuartzCore.framework
// OpenGLES.framework
// SystemConfiguration.framework
// CoreGraphics.framework
// Security.framework
// libsqlite3.0.tbd(xcode7以前为 libsqlite3.0.dylib)、CoreTelephony.framework
// libstdc++.6.0.9.tbd(xcode7以前为libstdc++.6.0.9.dylib)
# 05.单独引入mapapi.bundle资源文件(在"BaiduMapAPI_Map.framework"中)
七.代码: 07-01(了解)导航-方案3-第三方-百度地图-集成百度地图SDK
# 1.初始化检索对象,并设置BMKPoiSearch 代理
// 实现代理: 返回POI搜索结果
//func onGetPoiResult(_ searcher: BMKPoiSearch!, result poiResult: BMKPoiResult!, errorCode: BMKSearchErrorCode) {...}
/// 当检索到结果的时候会来到的方法
//当在设置城市未找到结果,但在其他城市找到结果时,回调建议检索城市列表
# 2. 设置BMKMapView代理
// 实现代理: 长按地图时会回调此接口
//func mapview(_ mapView: BMKMapView!, onLongClick coordinate: CLLocationCoordinate2D) {...}
//发起检索
七.代码: 07-03(了解)导航-方案3-第三方-百度地图-添加大头针
# 1.设置地图显示区域:
//let span = BMKCoordinateSpan(...)
//let region = BMKCoordinateRegion(...)
//mapView.setRegion(region, animated: true)
# 2.获取poi列表: poiResult.poiInfoList as? [BMKPoiInfo]
# 3.添加大头针:
//let annotaion = BMKPointAnnotation()
//annotaion.coordinate = poiInfoList.pt
//annotaion.title = poiInfoList.name
//annotaion.subtitle = poiInfoList.address
//mapView.addAnnotation(annotaion)
七.代码: 07-04(了解)导航-方案3-第三方-百度地图-集成百度导航SDK(百度开发平台模块: iOS导航SDK)
# 小功能: "双指放大缩小: commamd + option
# 1.导入BaiduNaviSSDK
# 2.设置定位服务,并设置代理:
"lazy var locService : BMKLocationService = {...}()
# 3.遵守并实现位置服务代理
// 1.获取用户位置
// 获取用户一次位置
"locService.stopUserLocationService()
// 2.进行导航
// 节点数组
"var nodesArray = [BNRoutePlanNode]()
// 3.起点
"let startNode = BNRoutePlanNode()
"nodesArray.append(startNode)
// 4.终点
"let endNode = BNRoutePlanNode()
"nodesArray.append(endNode)
// 5.发起路径规划
"BNCoreServices.routePlanService().startNaviRoutePlan(BNRoutePlanMode_Recommend, naviNodes: nodesArray, time: nil, delegete: self, userInfo: nil)
# 4.遵守并实现算路代理
// 算路成功回调
"func routePlanDidFinished(_ userInfo: [AnyHashable : Any]!) {...}
//路径规划成功,开始导航
"BNCoreServices.uiService().showPage(BNaviUI_NormalNavi, delegate: nil, extParams: nil)