Подтвердить что ты не робот

Как обновить MKPolyline/MKPolylineView?

Я пытаюсь создать наложение полилинии (MKPolyline), которое периодически обновляется, чтобы имитировать движение объекта. Я могу добиться этого, удалив старый оверлей, обновив полилинию и добавив наложение снова, но это приводит к мерцанию.

Для аннотации точки (MKPointAnnotation) вы можете просто изменить ее координату, и представление будет обновляться автоматически и плавно без необходимости удаления и повторного добавления аннотации.

Возможно ли это как-то для наложения?

4b9b3361

Ответ 1

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

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

Ответ 2

Все наложения MapKit неизменяемы, поэтому, чтобы получить изменчивость, вам нужно создать свой собственный оверлей и перерисовать только регион, который необходимо обновить.

Вы можете найти пример в примере примера приложения Breadcrumb от Apple. Ссылка на перекресток

Ответ 3

Класс MKPolyline наследует MKMultiPoint, который состоит из набора точек. Это свойство, доступное только для чтения, что, к сожалению, не может его обновить.