Большое количество маркеров

Я работаю над приложением, использующим SDK версии 1.0.2, которому необходимо управлять 400-500 маркерами. Вообще говоря, производительность очень хорошая, за исключением случаев, когда отображается пользовательское информационное окно. Большое количество или маркеры и пользовательское информационное окно вызывают заикание пользовательского интерфейса.

Я понимаю, что проблема в количестве маркеров, и когда я уменьшаю количество маркеров, проблема не появляется. Я пытался уменьшить количество маркеров, добавляя только те, которые видны во время обратного вызова didChangeCameraPosition, но я обнаружил, что добавление и удаление маркеров оказывает большее влияние на производительность.

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


person user2030786    schedule 31.01.2013    source источник
comment
Вы пробовали какой-то алгоритм кластеризации?   -  person Lee Armstrong    schedule 07.02.2013
comment
Пробовали ли вы регулировать запросы на добавление маркеров в didChangeCameraPosition? Может быть, добавлять маркеры только тогда, когда пользователь перестал с ними взаимодействовать на определенное количество миллисекунд?   -  person skarE    schedule 02.03.2013
comment
Вероятно, вам следует повторно использовать свое собственное информационное окно и просто обновить его. Вместо того, чтобы делать новый для каждого маркера.   -  person fellowworldcitizen    schedule 22.04.2013
comment
Пожалуйста, откройте вопрос в их инструменте отслеживания проблем. Кажется, это распространенная ошибка. Я столкнулся с той же проблемой и до сих пор не решен. Решение @skarE у меня не работает :(   -  person khose    schedule 11.07.2013
comment
При регистрации проблемы, если вы можете включить пример приложения, которое показывает проблему, которая поможет. Спасибо! Ссылка на средство отслеживания ошибок: code.google.com/p/gmaps-api-issues/issues/   -  person skarE    schedule 12.07.2013


Ответы (1)


Новая версия SDK 1.4.0, выпущенная в июле 2013 года, имеет новый метод делегата mapView:idleAtCameraPosition:, который будет вызываться после окончания движения камеры. Таким образом, вы можете сместить маркер, добавив логику к этому методу вместо didChangeCameraPosition, который будет вызываться несколько раз во время смены камеры. Это должно улучшить производительность.

person tony m    schedule 26.07.2013