как обновить MKPolyline / MKPolylineView? - PullRequest
15 голосов
/ 03 июля 2010

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

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

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

Ответы [ 3 ]

15 голосов
/ 05 июля 2010

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

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

10 голосов
/ 03 января 2011

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

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

1 голос
/ 05 июля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...