Как обновить MKPolyline/MKPolylineView?
Я пытаюсь создать наложение полилинии (MKPolyline), которое периодически обновляется, чтобы имитировать движение объекта. Я могу добиться этого, удалив старый оверлей, обновив полилинию и добавив наложение снова, но это приводит к мерцанию.
Для аннотации точки (MKPointAnnotation) вы можете просто изменить ее координату, и представление будет обновляться автоматически и плавно без необходимости удаления и повторного добавления аннотации.
Возможно ли это как-то для наложения?
Ответы
Ответ 1
да, вам нужно добавить дополнительный оверлей с набором точек от вашего последнего пункта до следующего пункта. Когда вы создаете MKPolyline с вашими точками, вы не сможете изменить его, когда он рисует MKPolylineView, не удаляя старый и добавляя вновь созданный.
вы можете создать новое представление полилинии со всеми точками (включая новое) и добавить их к карте, но не удалять старые. то после добавления нового можно удалить более старый. Это может быть не очень хорошо, но он должен избавиться от обновления на обновлениях. вы можете отличить старое и новое с тегом. возможно, подсчет очков, поскольку тег будет работать.
Ответ 2
Все наложения MapKit неизменяемы, поэтому, чтобы получить изменчивость, вам нужно создать свой собственный оверлей и перерисовать только регион, который необходимо обновить.
Вы можете найти пример в примере примера приложения Breadcrumb от Apple.
Ссылка на перекресток
Ответ 3
Класс MKPolyline наследует MKMultiPoint, который состоит из набора точек. Это свойство, доступное только для чтения, что, к сожалению, не может его обновить.