Выделите две точки на MapKit Swift 5 - PullRequest
0 голосов
/ 19 февраля 2020

Я пытаюсь выделить дорогу между 2 точками, используя MapKit. Все, что я не хочу указаний, я просто хочу попытаться выделить дорогу между этими двумя точками.

Мой код:

import UIKit
import MapKit
class ViewController: UIViewController {

@IBOutlet weak var mapView: MKMapView!


struct Points {
  var name: String
  var lattitude: CLLocationDegrees
  var longtitude: CLLocationDegrees
}



override func viewDidLoad() {
    super.viewDidLoad()


    let points = [
    Points(name: "Point 1", lattitude: 52.100525, longtitude: -9.623071),
    Points(name: "Point 2", lattitude: 52.07241, longtitude: -9.575299)
    ]

    fetchPointsOnMap(points)

}


func fetchPointsOnMap(_ points: [Points]) {
  for points in points {
    let annotations = MKPointAnnotation()
    annotations.title = points.name
    annotations.coordinate = CLLocationCoordinate2D(latitude:
      points.lattitude, longitude: points.longtitude)
    mapView.addAnnotation(annotations)
  }
}

}`

1 Ответ

1 голос
/ 19 февраля 2020

Вы можете нарисовать линию :

   directionsRequest.transportType = MKDirectionsTransportType.automobile

        //Draw polyline by using MKRoute so it follows the street roads...
        for (k, item) in arrayarrayPlacemarks.enumerated() {
            if k < (arrayarrayPlacemarks.count - 1) {
                directionsRequest.source = item
                directionsRequest.destination = arrayarrayPlacemarks[k+1]

                let directions = MKDirections(request: directionsRequest)
          directions.calculate { (response:MKDirections.Response!, error: Error!) -> Void in
                    if error == nil {
                        self.locRoute = response.routes[0] as? MKRoute
                        let geodesic:MKPolyline = self.locRoute!.polyline
                        self.mapView.addOverlay(geodesic)
                    }
                }
            }
        }

Делегат :

  func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
        if overlay.isKind(of: MKPolyline.self){
                var polylineRenderer = MKPolylineRenderer(overlay: overlay)
                polylineRenderer.fillColor = UIColor.blue
                polylineRenderer.strokeColor = UIColor.blue
                polylineRenderer.lineWidth = 2

            return polylineRenderer
     }
        return MKOverlayRenderer(overlay: overlay)
    }
...