gpt4 book ai didi

ios - 两个坐标之间的纬度/经度差(以米为单位)?

转载 作者:行者123 更新时间:2023-11-30 12:35:09 32 4
gpt4 key购买 nike

我正在尝试创建一个 MKCooperativeRegion,其中用户位置位于中心,并且另一个坐标应该在该区域内可见。简而言之,我试图以用户位置为中心,同时具有一定数量的可见注释。我的方法是查看第 N 个最远坐标所在的位置,并尝试计算用户位置坐标到该坐标的距离或坐标区域。

    var topLeftCoord = CLLocationCoordinate2D(latitude: -90.0, longitude: 180.0)
var bottomRightCoord = CLLocationCoordinate2D(latitude: 90.0, longitude: -180.0)

topLeftCoord.longitude = fmin(topLeftCoord.longitude, outerLongitude)
topLeftCoord.latitude = fmax(topLeftCoord.latitude, outerLatitude)
bottomRightCoord.longitude = fmax(bottomRightCoord.longitude, outerLongitude)
bottomRightCoord.latitude = fmin(bottomRightCoord.latitude, outerLatitude)

topLeftCoord.longitude = fmin(topLeftCoord.longitude, userCoordinates.longitude)
topLeftCoord.latitude = fmax(topLeftCoord.latitude, userCoordinates.latitude)
bottomRightCoord.longitude = fmax(bottomRightCoord.longitude, userCoordinates.longitude)
bottomRightCoord.latitude = fmin(bottomRightCoord.latitude, userCoordinates.latitude)

let regionSpan = MKCoordinateSpanMake(fabs((topLeftCoord.latitude - bottomRightCoord.latitude)), fabs((bottomRightCoord.longitude - topLeftCoord.longitude)))
var region = MKCoordinateRegion(center: userCoordinates, span: regionSpan)

region = self.mapView.regionThatFits(region)
self.mapView.setRegion(region, animated: true)

这种方法可行,但我有点偏移。我认为问题在于,这里我没有考虑到用户位置应该位于中心,因此此代码只是确保用户以及 outerLatitudeouterLongitude< 的坐标 在范围内。但是当以用户坐标为中心时,外部坐标不再可见。

我一生都无法弄清楚这一点。我也尝试过这样做:

    let outerLocation = CLLocation(latitude: outerLatitude, longitude: outerLongitude)
let userLocation = CLLocation(latitude: userCoordinates.latitude, longitude: userCoordinates.longitude)

let distance = userLocation.distance(from: outerLocation)
var region = MKCoordinateRegionMakeWithDistance(userCoordinates, distance, distance)

region = self.mapView.regionThatFits(region)
self.mapView.setRegion(region, animated: true)

但我最终得到了相同的结果,我真的不明白。我得到的距离约为 340m(这是相当合理的)。然而,MKCooperativeRegionMakeWithDistance 要求提供 latitudinalMeterslongitudinalMeters,我只需发送从坐标 A 到 B 的距离即可。找不到将组件拆分为 latitudinalMeterslongitudinalMeters 的方法,我只能简单地获取两者之间的 1 距离。

最佳答案

I can't find a way to split the components into latitudinalMeters and longitudinalMeters, I can simply get 1 distance between the two

尝试创建一个与您的用户位置具有相同纬度且与您的外部位置相同经度的新点,并使用它来获取“纬度距离”

然后创建一个与用户位置具有相同经度、与外部位置具有相同纬度的点,并使用它来获取纵向距离。

注意:如果外点比用户点更接近赤道,您可能希望通过使用外点的纬度来获取两个新点的纬度距离。

关于ios - 两个坐标之间的纬度/经度差(以米为单位)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42975846/

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