Как отобразить аннотации, которые находятся в пределах установленного расстояния (Swift 4.0) - PullRequest
0 голосов
/ 25 января 2019

Я пытаюсь отобразить все автобусные остановки в пределах 1 км для аннотаций, однако UIMap показывает аннотации, которые находятся не в пределах 1 км.Когда я изменится на 10 км, он будет отображать аннотации на расстоянии более 1 км, но недостаточно близко.

class Значение: Codable {let busStopCode, roadName, description: String let latitude, longitude: 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)
        }
    }
}

Я получаю автобусные остановки с комментариями в 10 км, но не в пределах 1 км Image of annotations on Map

1 Ответ

0 голосов
/ 26 января 2019

проверьте расстояние от busStops и вас (или любое значение)

//for 1km
let distance = myLocation.distance(from: busStopLocation) / 1000

, затем проверьте для busStop

if  distance <= 0.1{

self.displayAlert(title: "INFO", message: "BUS STOP NEAR 1KM")
}

проверьте расстояние для busStop 10 км

let distance = myLocation.distance(from: busStopLocation) / 10000

если расстояние> 0,1 {

self.displayAlert(title: "INFO", message: "BUS STOP AT 10KM")
}
...