gpt4 book ai didi

ios - Annotation.coordinate 不匹配 coordinate.latitude 和 coordinate.longitude

转载 作者:行者123 更新时间:2023-11-28 15:19:20 29 4
gpt4 key购买 nike

在我的项目中,我使用 LocationSearchTable/MKLocalSearch。当用户点击一个项目时,我的添加注释方法在 MapViewController 中被调用:

func dropPinZoomIn(placemark: MKPlacemark) {

// cache the pin
selectedPin = placemark

// create the pin
let annotation = MKPointAnnotation()
annotation.coordinate = placemark.coordinate
annotation.title = placemark.name
if let streetNumber = placemark.subThoroughfare,
let city = placemark.locality,
let state = placemark.administrativeArea {
annotation.subtitle = "\(streetNumber) \(city) \(state)"
}

// add the pin the the mapView
mapView.addAnnotation(annotation)
let span = MKCoordinateSpanMake(0.01, 0.01)
let region = MKCoordinateRegionMake(annotation.coordinate, span)
mapView.setRegion(region, animated: true)

print(placemark.coordinate)
print(placemark.coordinate.latitude)
print(placemark.coordinate.longitude)

最后,当我打印坐标时,我得到一个更长的版本,而当我分别打印纬度和经度时,它会在接近末尾的数字四舍五入。当我需要比较坐标时,这会给我带来麻烦。我怎样才能防止这种舍入?例如,这是我的结果:

CLLocationCoordinate2D(纬度:37.331413259110334,经度:-122.03048408031462)CLLocationCoordinate2D(latitude: 37.3314132591103, . . longitude: -122.030484080315)

最佳答案

尝试使用以下代码来防止数字四舍五入。

print(coordinate)
print(coordinate.latitude.debugDescription)
print(coordinate.longitude.debugDescription)

结果:

CLLocationCoordinate2D(latitude: -33.499989999999997, longitude: 150.255) -33.499989999999997 150.255

注意:

coordinate.latitude/coordinate.longitude 的类型是CLLocationDegrees。此类型是 Double 的别名。在大多数编程语言中,用 == 比较 Double 或 Float 值不会给出预期的结果,这意味着您认为应该相等的数字实际上略有不同。相反,如果差异低于某个阈值,则计算绝对差异并将数字视为相等。参见 Compare double to zero using epsilon以获得更多解释。

关于ios - Annotation.coordinate 不匹配 coordinate.latitude 和 coordinate.longitude,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46290361/

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