У меня очень простой View Controller, чтобы продемонстрировать это странное поведение рендеринга MKPolyline. Ничего особенного, просто обычные вызовы api.MKPolyline странный рендеринг, связанный с масштабированием в MapKit
import UIKit
import MapKit
class ViewController: UIViewController, MKMapViewDelegate {
@IBOutlet weak var map: MKMapView!
override func viewDidLoad() {
super.viewDidLoad()
map.delegate = self
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
let p1 = CLLocationCoordinate2D(latitude: 51, longitude: 13)
var coords = [
p1,
CLLocationCoordinate2D(latitude: 51.1, longitude: 13),
CLLocationCoordinate2D(latitude: 51.2, longitude: 13),
CLLocationCoordinate2D(latitude: 51.3, longitude: 13)
]
let polyline = MKPolyline(coordinates: &coords, count: coords.count)
map.addOverlays([polyline], level: .aboveRoads)
let cam = MKMapCamera(lookingAtCenter: p1, fromDistance: 1000, pitch: 45, heading: 0)
map.setCamera(cam, animated: true)
}
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
let r = MKPolylineRenderer(overlay: overlay)
r.strokeColor = UIColor.blue
return r
}
}
Проведение полилинии очень странно. Во время масштабирования и панорамирования вы можете увидеть некоторые артефакты.
Взгляните на фотографии ниже:
После некоторых панорамирование
После увеличения и уменьшения масштаба масштабирования снова
Как это исправить? Я пытался реализовать свой собственный рендерер, но в той же ситуации. Подобно overaly, кэшируется и не перерисовывается вовремя. Я работаю над прошивкой 10, iPhone 6, симулятор от IOS SDK 10 Xcode 8.
См. Этот ответ http://stackoverflow.com/questions/20601768/mkpolylinerenderer-produces-jagged-unequal-paths – doogi
У меня была такая же проблема и исправлено это с помощью этого: http://stackoverflow.com/questions/40087736/ios- 10-mapkit-previous-layer-zoom-issue – fatinho
Нет подходящего решения для этой проблемы и не нашел решения. кто-нибудь еще ? – Kumar