Управление многими метками в MapKit

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

  1. Для каждой метки, которую нужно нарисовать, я сначала ищу в массиве аннотаций MapKit (созданный пользовательским MKPlacemark, где я добавил дату создания и уникальный идентификатор) уникальный идентификатор метки, которую нужно нарисовать. Если я нахожу метку, я обновляю только ее местоположение, в противном случае я добавляю новую аннотацию на карту.
  2. Для каждой метки в массиве аннотаций MapKit я проверяю, превышает ли истекшее время между текущей датой и датой создания больше 10 секунд, и если это правда, я удаляю эту аннотацию с карты.

Я повторяю эти 2 цикла каждые 2 секунды.

Проблема в том, что когда я управляю 20 метками или более, циклы занимают слишком много времени, а процесс обновления-удаления не работает должным образом.

Какой самый быстрый метод для работы с массивом аннотаций? Это быстрее, удаляя каждую аннотацию и перерисовывая их всех?

1 ответ

Решение

Я решил проблему. Я делал это правильно. Единственной оставшейся проблемой было зависание экрана во время обновления карты. По этой причине я решил запустить процесс обновления / удаления в другом потоке. Это означает, что когда вы готовы обновить метку или удалить ее, фоновый поток должен вызвать обновление карты в главном потоке (карта должна быть обновлена ​​в основном потоке).

Другие вопросы по тегам