gpt4 book ai didi

ios - MKCoordinatespan 根据源和目的地中心坐标计算 latitudedelta 和 longitudedelta

转载 作者:行者123 更新时间:2023-11-30 12:33:01 24 4
gpt4 key购买 nike

我正在尝试在应用程序中实现从源到目的地的 map 导航。我只想根据中心坐标动态计算 latitudedelta 和 longitudedelta。

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)

最佳答案

首先,您在计算中间位置时遇到问题,您必须检查此答案 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)

希望对你有帮助

关于ios - MKCoordinatespan 根据源和目的地中心坐标计算 latitudedelta 和 longitudedelta,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43233134/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com