Динамически изменять стиль полилинии MapView, когда пользователь начинает двигаться по маршруту в Swift

#ios #swift3 #mapkit

#iOS #swift3 #mapkit

Вопрос:

Я использую Apple MapView для отображения навигации в моем приложении. Я могу изменить стиль полилинии на пунктирный узор из места получения в место назначения с помощью следующего кода:

 func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
    let renderer = MKPolylineRenderer(overlay: overlay)
    renderer.strokeColor = POLYLINE_COLOR
    renderer.lineWidth = 3
    renderer.lineDashPattern =[0,6]
    return renderer
}
 

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

Ответ №1:

Что я делаю, так это сохраняю ссылку на созданный MKPolylineRenderer объект.

Затем, если что-то происходит (например, перемещение пользователя), я обновляю средство визуализации, например, новый lineDashPattern.

Тогда я звоню renderer.setNeedsDisplay()

Вот и все.

Не забудьте выполнить все обновления для объекта визуализации и renderer.setNeedsDisplay() в основной очереди.