【问题标题】:MKCoordinatespan latitudedelta and longitudedelta calculation based on center coordinates of source and destinationMKCoordinatespan latitudedelta 和 longitudedelta 计算基于源和目的地的中心坐标
【发布时间】:2017-04-05 13:48:40
【问题描述】:

我正在尝试在应用程序中实现从源到目的地的地图导航。我只想根据中心坐标动态计算纬度增量和经度增量。

let midLat = (self.source.coordinate.latitude + self.destination.coordinate.latitude)/2
let midLang = (self.source.coordinate.longitude + self.destination.coordinate.longitude)/2
let centerCoordinate = CLLocationCoordinate2DMake(midLat, midLang)
self.mapView.setRegion(MKCoordinateRegionMake(centerCoOrdinate, MKCoordinateSpanMake(0.09, 0.09)), animated: true)

【问题讨论】:

    标签: ios iphone swift mapkit swift2.3


    【解决方案1】:

    首先你在计算中间位置时遇到问题,你必须使用那里提出的扩展名检查这个答案Determining Midpoint Between 2 Cooridinates

    import Foundation
    import MapKit
    extension CLLocationCoordinate2D {
        // MARK: CLLocationCoordinate2D+MidPoint
        func middleLocationWith(location:CLLocationCoordinate2D) -> CLLocationCoordinate2D {
    
            let lon1 = longitude * M_PI / 180
            let lon2 = location.longitude * M_PI / 180
            let lat1 = latitude * M_PI / 180
            let lat2 = location.latitude * M_PI / 180
            let dLon = lon2 - lon1
            let x = cos(lat2) * cos(dLon)
            let y = cos(lat2) * sin(dLon)
    
            let lat3 = atan2( sin(lat1) + sin(lat2), sqrt((cos(lat1) + x) * (cos(lat1) + x) + y * y) )
            let lon3 = lon1 + atan2(y, cos(lat1) + x)
    
            let center:CLLocationCoordinate2D = CLLocationCoordinate2DMake(lat3 * 180 / M_PI, lon3 * 180 / M_PI)
            return center
        }
    }
    

    那你就这样用吧

    let middleLocation = self.source.coordinate.middleLocationWith(location: self.destination.coordinate)
    self.mapView.setRegion(MKCoordinateRegionMake(middleLocation, MKCoordinateSpanMake(0.09, 0.09)), animated: true)
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-30
      • 2018-04-02
      • 2020-05-08
      • 2023-03-26
      • 2013-07-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多