Подпись для mapView(_:rendererFor:)
неверна.Это изменилось.Теперь это:
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
let renderer = MKPolylineRenderer(overlay: overlay)
renderer.strokeColor = .red
renderer.lineWidth = 5
return renderer
}
fatalError("Unexpected MKOverlay type")
}
Если вы добавите оператор или точку останова print
в ваш текущий метод, я думаю, вы обнаружите, что он не вызывается.И, конечно же, убедитесь, что вы установили delegate
вида вашей карты, либо в IB, либо программно.
Кстати, у вас есть похожая проблема с didUpdateToLocation
.Подпись этого теперь:
func locationManager(_ manager: CLLocationManager,
didUpdateTo newLocation: CLLocation,
from oldLocation: CLLocation) {
...
}
Но вы действительно не должны использовать этот метод вообще.Как видно из документации , она устарела.Используйте взамен locationManager(_:didUpdateLocations:)
.Вам нужно будет сохранить собственную ссылку на oldLocation
var oldLocation: CLLocation?
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
guard let location = locations.last else { return }
if let oldCoordinate = oldLocation?.coordinate {
let coordinates = [oldCoordinate, location.coordinate]
let polyline = MKPolyline(coordinates: coordinates, count: coordinates.count)
mapView.addOverlay(polyline)
}
oldLocation = location
...
}