У меня есть массив CLLocationCoordinate2D, и мне нужно нарисовать линию, соединяющую первый индекс с последним индексом в массиве.
Я видел ответы здесь и в других местах, но они в основном для пожилыхверсии swift, или для массива строк, которые вы сначала конвертируете в double или что-то еще, или только для одного местоположения.
Я попытался создать MKPolyline, viewForOverlay и т. д., но я не могу получить строкупоказывать.Чего мне не хватает?
let locationManager = CLLocationManager()
let regionRadius: CLLocationDistance = 3000
var locations: [CLLocationCoordinate2D] = []
var latitude: [CLLocationDegrees] = []
var longitude: [CLLocationDegrees] = []
override func viewDidLoad() {
super.viewDidLoad()
mapView.delegate = self
mapView.register(MKMarkerAnnotationView.self, forAnnotationViewWithReuseIdentifier: MKMapViewDefaultAnnotationViewReuseIdentifier)
createAnnotations()
centerMapOnLocation(location: initialLocation)
var polyline = MKPolyline(coordinates: &locations, count: locations.count)
mapView.addOverlay(polyline)
}
// MARK: - Create Annotaions
func createAnnotations() {
locations = zip(latitude, longitude).map(CLLocationCoordinate2D.init)
AppLogger.logInfo("\(locations)")
for location in locations {
let annotation = MKPointAnnotation()
annotation.coordinate = CLLocationCoordinate2D(latitude: location.latitude, longitude: location.longitude)
mapView.addAnnotation(annotation)
}
}
// MARK: - Region Zoom
func centerMapOnLocation(location: CLLocation) {
let coordinateRegion = MKCoordinateRegion(center: location.coordinate,
latitudinalMeters: regionRadius,
longitudinalMeters: regionRadius)
mapView.setRegion(coordinateRegion, animated: true)
}
// MARK: - Draw Polylines
func mapView(mapView: MKMapView!, viewForOverlay overlay: MKOverlay!) -> MKOverlayRenderer! {
if (overlay is MKPolyline) {
let pr = MKPolylineRenderer(overlay: overlay)
pr.strokeColor = UIColor.blue.withAlphaComponent(0.5)
pr.lineWidth = 5
return pr
}
return nil
}
Ожидаемый результат: Из массива мест мы по существу рисуем пройденный маршрут.Это не метод получения маршрута, так как диск уже занят.