【发布时间】:2017-05-23 00:15:00
【问题描述】:
我正在开发一个应用程序,我可以在其中获取用户位置和我添加的一些自定义图钉(餐厅)。我想要做的是设置用户和餐厅之间的半径(5 公里到 10 公里之间)距离,然后显示该区域内的那些。
我的问题是,如何设置该半径并获取其中的位置
最好的问候!
【问题讨论】:
-
这个问题在 Objective-C 中,而不是在 Swift 中。所以它不符合重复的条件。 @KeghamK。
我正在开发一个应用程序,我可以在其中获取用户位置和我添加的一些自定义图钉(餐厅)。我想要做的是设置用户和餐厅之间的半径(5 公里到 10 公里之间)距离,然后显示该区域内的那些。
我的问题是,如何设置该半径并获取其中的位置
最好的问候!
【问题讨论】:
您可以进行一些距离计算来确定要显示的图钉。
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))
}
}
【讨论】: