我正在尝试在注释上显示1公里之内的所有公交车站,但是,UIMap显示的是不在1公里之内的注释。当我更改为10km时,它将显示距离1km以上但距离不够远的注释。
类别价值:可编码{ 让busStopCode,roadName,描述:字符串 让纬度,经度:Double
enum CodingKeys: String, CodingKey {
case busStopCode = "BusStopCode"
case roadName = "RoadName"
case description = "Description"
case latitude = "Latitude"
case longitude = "Longitude"
}
init(busStopCode: String, roadName: String, description: String, latitude: Double, longitude: Double) {
self.busStopCode = busStopCode
self.roadName = roadName
self.description = description
self.latitude = latitude
self.longitude = longitude
}
func GetDistance(latitude: Double, longitude: Double) -> Double {
let selectedCoordinate = CLLocation(latitude: latitude, longitude: longitude)
let busStopCoordinate = CLLocation(latitude: Double(self.latitude), longitude: self.longitude)
return busStopCoordinate.distance(from: selectedCoordinate)
}
ViewController类
@IBAction func GPSTrack(_ sender: Any) {
InputAllAnnotation(busStops: stopSearchResults)
print("Searching for nearby bus stops")
}
func InputAllAnnotation(busStops: [Value]) {
for busStop in busStops{
let busStopObj = BusStopAnnotation(value: busStop)
Annotations.append(busStopObj)
let distance = busStop.GetDistance(latitude: Double(currentLocation?.latitude ?? 0), longitude: Double(currentLocation?.longitude ?? 0))
if distance < 10000 {
mapView.addAnnotation(busStopObj)
}
}
}
答案 0 :(得分:0)
检查距busStops和您(或任何值)的距离
//for 1km
let distance = myLocation.distance(from: busStopLocation) / 1000
然后检查busStop
if distance <= 0.1{
self.displayAlert(title: "INFO", message: "BUS STOP NEAR 1KM")
}
检查公共汽车停止10公里的距离
let distance = myLocation.distance(from: busStopLocation) / 10000
如果距离> 0.1 {
self.displayAlert(title: "INFO", message: "BUS STOP AT 10KM")
}