Полилинии исчезают при увеличении масштаба
Я создал семь разных полилиний. Однако некоторые из них исчезают, когда я увеличиваю масштаб. Почему это происходит? Как я могу предотвратить это?
Вот мой рендерер ломаной линии:
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
let renderer = MKPolylineRenderer(polyline: overlay as! MKPolyline)
renderer.strokeColor = UIColor(red: 1, green: 1, blue: 1, alpha: 0.9)
renderer.lineWidth = 2.2
return renderer
}
//Thousands of parameters sending as a parameter
func createPathWithPoints(_ points: [MKMapPoint]) {
let arc = MKPolyline(points: points, count: points.count)
mapView.addOverlay(arc)
}
Пожалуйста помоги!
0 ответов
У меня была аналогичная проблема с использованием MKPolyline, и ниже я сделал, чтобы исправить это.
1) Убедитесь, что у вас есть делегат mapView в viewDidLoad ().
mapView.delegate = self
2) Добавьте ваш оверлей на карту.
mapView.addOverlay(polyLine())
Я использую coredata в своем проекте, поэтому, если myLocations пусто, я возвращаю пустой MKPolyline()
private func polyLine() -> MKPolyline {
guard let locations = myLocations else {
return MKPolyline()
}
// Coordinates
let coords: [CLLocationCoordinate2D] = locations.map { location in
let location = location as! Location
return CLLocationCoordinate2D(latitude: location.latitude, longitude: location.longitude)
}
return MKPolyline(coordinates: coords, count: coords.count)
}
3) У нас есть доступ к rendererFor из MKMapViewDelegate. Вы можете изменить цвет и ширину полилинии.
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
guard let polyline = overlay as? MKPolyline else {
return MKOverlayRenderer(overlay: overlay)
}
// Setup renderer
let renderer = MKPolylineRenderer(polyline: polyline)
renderer.strokeColor = .systemBlue
renderer.lineWidth = 3
return renderer
}