Я разрабатываю приложение для Android, основанное на местоположении, которое имеет дело с множеством элементов наложения.
Фон: Есть довольно много объектов, которые я хочу отобразить на карте. Ко -координаты объектов изменяются в реальном времени по мере изменения их местоположения. В соответствии с обновленным местоположением объекты должны быть обновлены на карте. Сущностей может вырасти до большого количества.
Реализация У меня две накладки. Один для MyLocationOverlay для отображения местоположения пользователя, а другой — подкласс ItemizedOverlay со всеми объектами, которые мне нужно отобразить на карте.
Проблема Всякий раз, когда изменяется местоположение объекта, необходимо обновить соответствующий элемент наложения. Проблема в том, что я не уверен, что это лучший способ сделать это. У меня есть выбор
Когда я получаю местоположение определенного объекта, я удаляю все наложения с карты и повторно -добавляю наложения. Один из элементов наложения теперь создается с обновленным местоположением.
List<Overlay> overlays = map.getOverlays();
overlays.removeAll(overlays);
overlays.add(new MyOverlay(marker,this));
Я создаю наложение для каждой сущности.Это означает, что я создам 500 наложений, каждое из которых будет содержать только один элемент наложения. Я создаю подкласс класса Overlay и добавляю свои собственные свойства, чтобы четко идентифицировать объект и создавать по одному для каждого. Когда я достигаю обновления местоположения определенного объекта, я выполняю итерацию и получаю конкретный элемент наложения, удаляю его и добавляю новый с обновленным местоположением.
Я не знаю, какой из них лучше всего использовать с точки зрения производительности.
Я чувствую, что удаление всех и повторное -добавление всех оверлеев для каждого отдельного обновления местоположения (, что может быть довольно часто )для каждого отдельного объекта, становится довольно накладным, когда количество объектов становится больше 500 или 1000.
В то же время повторение одного и того же количества сущностей также может быть равно затратным.
Будем признательны за любые советы о том, какой из них выбрать, или лучший способ реализовать это.
/Энди