【问题标题】:(Swift) set a 1km radius within my location MapKit(Swift) 在我的位置 MapKit 内设置 1 公里半径
【发布时间】:2017-05-23 00:15:00
【问题描述】:

我正在开发一个应用程序,我可以在其中获取用户位置和我添加的一些自定义图钉(餐厅)。我想要做的是设置用户和餐厅之间的半径(5 公里到 10 公里之间)距离,然后显示该区域内的那些。

我的问题是,如何设置该半径并获取其中的位置

最好的问候!

【问题讨论】:

标签: ios swift mapkit


【解决方案1】:

您可以进行一些距离计算来确定要显示的图钉。

let pins = Array<MKPointAnnotation>() // This is an empty array, so just use your array of locations or add to this.

if let currentLocation = locationManager.location?.coordinate {

    for pin in pins {

        let locationMapPoint = MKMapPointForCoordinate(currentLocation)

        let pinMapPoint = MKMapPointForCoordinate(pin.coordinate)

        let distance = MKMetersBetweenMapPoints(locationMapPoint, pinMapPoint)

        if distance >= 5000 && distance <= 10000 {

            self.map.addAnnotation(pin)
        }
    }
}

如果你想要更整洁的东西,你也可以这样做。

let pins = Array<MKPointAnnotation>()

if let currentLocation = locationManager.location?.coordinate {

    let filtered = pins.filter { $0.coordinate.distance(to: currentLocation) >= 5000 && $0.coordinate.distance(to: currentLocation) <= 10000 }

    self.map.addAnnotations(filtered)
}

你也需要这个扩展。

extension CLLocationCoordinate2D {

    func distance(to coordinate: CLLocationCoordinate2D) -> Double {

        return MKMetersBetweenMapPoints(MKMapPointForCoordinate(self), MKMapPointForCoordinate(coordinate))
    }
}

【讨论】:

  • 哇,非常感谢您的回答,代码清晰易懂;我会试一试,然后告诉你会发生什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-25
  • 2019-05-04
  • 2013-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多