gpt4 book ai didi

ios - Swift mkmapview 从纬度经度增量获取可见 map 区域的缩放级别、宽度或半径

转载 作者:可可西里 更新时间:2023-11-01 00:35:37 29 4
gpt4 key购买 nike

我对如何获取 map 可见区域的缩放级别和半径感到困惑(使用 mapkit mapview)。

这是我正在寻找的东西(根据需要,它们中的一个或两个)-

  1. 缩放级别,是为了查看向用户显示 map 的哪个级别,根据该信息,我想在可见区域显示自定义图钉。如果缩放级别很高,我需要将一些商业商店的实际 Logo 显示为图钉。如果缩放级别较低,我需要显示彩色圆点而不是 Logo 。

截至目前,我正在使用 let updatedRadius = (mapView.camera.altitude)/1000 获取相机的高度,如果 updatedRadius 值 > 25.0,我将显示彩色点.低于 25.0,我显示 Logo 。我在 regionDidChanged 中这样做这种方法正确吗?

  1. Radius,是将它作为参数发送到我的 REST API,以获取该半径内的地点列表。当用户缩小 map 时,可见区域会增加,因此 REST API 需要更大的半径才能返回该区域覆盖的地点。

最终,应该发生的是,每当用户缩小时,半径就会改变。我需要将这个更改后的半径发送到我的 REST 以获取更新的列表。

  1. 什么是纬度经度增量,我们可以使用这些值得到可见区域的半径/宽度吗?

    让 latitudeDeltaVal = mapView.region.span.latitudeDelta
    让 longitudeDeltaVal = mapView.region.span.longitudeDelta

有人可以阐明需要做什么吗?

最佳答案

由于需要在区域变化时调用 api,因此需要在 mapView 的委托(delegate)函数 RegionDidChange 中计算半径。

    func mapView(mapView: MKMapView, regionDidChangeAnimated animated: Bool) {
let centralLocation = CLLocation(latitude: mapView.centerCoordinate.latitude, longitude: mapView.centerCoordinate.longitude)
self.centralLocationCoordinate = mapView.centerCoordinate

print("Radius - \(self.getRadius(centralLocation))")

}


func getRadius(centralLocation: CLLocation) -> Double{
let topCentralLat:Double = centralLocation.coordinate.latitude - mapView.region.span.latitudeDelta/2
let topCentralLocation = CLLocation(latitude: topCentralLat, longitude: centralLocation.coordinate.longitude)
let radius = centralLocation.distanceFromLocation(topCentralLocation)
return radius / 1000.0 // to convert radius to meters
}

关于ios - Swift mkmapview 从纬度经度增量获取可见 map 区域的缩放级别、宽度或半径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44674911/

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