Как эффективно загрузить более 1000 маркеров Google Earth?

У меня есть массив, содержащий более 1000 маркеров для Google Планета Земля.

На данный момент я перебираю массив с помощью цикла for, из-за которого Земля зависает до тех пор, пока все они не будут успешно загружены.

Может ли кто-нибудь порекомендовать лучший способ справиться с этим, чтобы он загружался намного быстрее для посетителей?

В идеале я думал о загрузке только тех маркеров в поле зрения/границах, но не видел никакой документации, подтверждающей эту идею.

Любая помощь будет принята с благодарностью!

Спасибо


person digitalclubb    schedule 16.05.2012    source источник
comment
Вам придется написать свой собственный метод для проверки границ положения маркера; многие приложения делают это сейчас.   -  person Mathletics    schedule 16.05.2012
comment
@Mathletics Вы видели какой-нибудь пример этого на практике? Не слишком уверен, как широта/долгота соответствует границам.   -  person digitalclubb    schedule 16.05.2012
comment
Yelp делает это при поиске по карте. Объект Google Map имеет метод getBounds, который возвращает следующее: developers.google.com /maps/documentation/javascript/, который вы можете использовать для тестирования. Вы читали API?   -  person Mathletics    schedule 16.05.2012
comment
Да, я заметил довольно много различий между Earth и Maps API — многое отличается, но я попытаюсь использовать Карты в качестве примера и переделать их в Earth. В Earth API намного меньше рабочих примеров/документации, что немного усложняет его :)   -  person digitalclubb    schedule 16.05.2012
comment
О черт, прости за это. Я так увлекаюсь картами, что забыл, что у Земли другой набор. Может не работать то же самое для вас тогда, мои извинения.   -  person Mathletics    schedule 16.05.2012


Ответы (2)


Я бы посоветовал вам использовать HTML5 WebWorkers для асинхронного создания экземпляров маркеров, а затем просто используйте любой метод, который у них есть для show()/hide(), перебирая ваши объекты.

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

person André Alçada Padez    schedule 16.05.2012
comment
Хм, да, к сожалению, я должен поддерживать IE7/8. Я думаю, это означает, что я застрял! - person digitalclubb; 17.05.2012

Одна из возможностей — сделать это с сервера с помощью обновлений KML: https://developers.google.com/kml/documentation/updates

Каждое обновление будет загружать, скажем, 100 маркеров и отображать их, а затем через секунду перезагружается и извлекает следующие 100 маркеров.

person Mano Marks    schedule 24.05.2012