iOS 位置相关

编程入门 行业动态 更新时间:2024-10-27 11:22:57

iOS <a href=https://www.elefans.com/category/jswz/34/1771147.html style=位置相关"/>

iOS 位置相关

后台定位


CLLocationManager // 定位管理器

关键设置项:
  • desiredAccuracy //准确度

  • distanceFilter //采集范围

回调方法:
//位置按照设置,发生变化时触发此方法
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) 
注意事项:

iOS >= 7.0时,Capabilities中配置开启后台定位功能
iOS >= 8.0时,需要主动请求权限,并且在plist文件中配置NSLocationAlwaysUsageDescription、NSLocationWhenInUseUsageDescription


CLGeocoder //位置转码器

关键方法
//根据地理位置名称获得对应的CLPlacemark类
geocodeAddressString(addressString: String, completionHandler: CLGeocodeCompletionHandler)
//根据地理坐标获得对应的CLPlacemark类
reverseGeocodeLocation(location: CLLocation, completionHandler: CLGeocodeCompletionHandler)

地图定位


MKMapView

关键设置项
  • showsScale //是否显示比例尺

  • showsCompass //是否显示指南针

  • showsTraffic //是否显示路况

  • mapType //地图模式:普通模式:Standard;卫星模式:Satellite;混合模式:Hybrid;卫星三维模式:SatelliteFlyover;混合三维模式:HybridFlyover

  • camera.pitch //摄像头角度

  • centerCoordinate //地图中心点

回调方法
//当位置发生变化时,触发此方法optional public func mapView(mapView: MKMapView, didUpdateUserLocation userLocation: MKUserLocation)
//自定义大头针
optional public func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView?
//点击大头针optional public func mapView(mapView: MKMapView, annotationView view: MKAnnotationView, calloutAccessoryControlTapped control: UIControl)
//规划的路线optional public func mapView(mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer
关键方法

粗略计算预计时间距离

    //设置起始点let request = MKDirectionsRequest()let source = MKMapItem(placemark: MKPlacemark(coordinate:self.currentLocation!, addressDictionary: nil))request.source = source//设置终点let destination = MKMapItem(placemark: MKPlacemark(coordinate:coordinate, addressDictionary: nil))request.destination = destination//type值为以下一种://驾车:MKDirectionsTransportType.Automobile//步行:MKDirectionsTransportType.Walking//交通:MKDirectionsTransportType.Transit//随意:MKDirectionsTransportType.Anyrequest.transportType = typelet calcuteDirections = MKDirections(request: request)let calculateETA = MKDirections(request:request)//计算驾车或步行时间calcuteDirections.calculateDirectionsWithCompletionHandler { (response, error) inif (error == nil) {for route in response!.routes {//添加线路                    self.locationMapView.addOverlay(route.polyline)}}}//计算公共交通时间calculateETA.calculateETAWithCompletionHandler { response, error inif error == nil {if let r = response {self.etaInfoAlert(r)}}}

导航

  • 苹果地图
    var launchOptions:[String : AnyObject]?

        if (r.transportType == MKDirectionsTransportType.Automobile) {launchOptions = [MKLaunchOptionsDirectionsModeKey:MKLaunchOptionsDirectionsModeDriving]}else if (r.transportType == MKDirectionsTransportType.Walking) {launchOptions = [MKLaunchOptionsDirectionsModeKey:MKLaunchOptionsDirectionsModeWalking]}else if (r.transportType == MKDirectionsTransportType.Transit) {launchOptions = [MKLaunchOptionsDirectionsModeKey:MKLaunchOptionsDirectionsModeTransit]}r.destination.openInMapsWithLaunchOptions(launchOptions)
    
  • 百度地图

         if (r.transportType == MKDirectionsTransportType.Automobile) {modelString = "driving"}else if (r.transportType == MKDirectionsTransportType.Walking) {modelString = "walking"}else if (r.transportType == MKDirectionsTransportType.Transit) {modelString = "transit"}let urlString = NSString(format: "baidumap://map/direction?origin=%f,%f&destination=%f,%f&mode=%@&src=pylocation",(self.currentLocation?.latitude)!,(self.currentLocation?.longitude)!, r.destination.placemark.coordinate.latitude, r.destination.placemark.coordinate.longitude,modelString!)UIApplication.sharedApplication().openURL(NSURL(string: urlString as String)!)
    
  • 高德地图

         if (r.transportType == MKDirectionsTransportType.Automobile) {model = 0}else if (r.transportType == MKDirectionsTransportType.Walking) {model = 2}else if (r.transportType == MKDirectionsTransportType.Transit) {model = 1}let urlString = NSString(format: "iosamap://path?sourceApplication=pylocation&sid=currentlocation&did=destination&dlat=%f&dlon=%f&dev=0&t=%d&m=0",r.destination.placemark.coordinate.latitude,r.destination.placemark.coordinate.longitude,model)UIApplication.sharedApplication().openURL(NSURL(string: urlString as String)!)
    

demo GitHub地址:

更多推荐

iOS 位置相关

本文发布于:2024-02-16 23:46:44,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1691853.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:位置   iOS

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!