Каков наилучший способ отображения карты Google с более чем 7000 маркеров мест на ней - PullRequest
0 голосов
/ 08 сентября 2011

Я использую класс codeigniter googlemaps V3 с codeigniter (очевидно), чтобы просмотреть местоположение из моей базы данных и вывести карту со всем местоположением, нанесенным на нее. Проблема в том, что у меня более 7000 меток, поэтому сгенерированный javascript огромен, а время загрузки страницы очень медленное. Есть ли лучший способ вывести эту карту, чтобы уменьшить накладные расходы?

Я сгруппировал маркеры, но при загрузке карты иногда браузер зависает при обращении к Google

Спасибо

Ответы [ 2 ]

3 голосов
/ 08 сентября 2011

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

У меня была похожая проблема некоторое время назад, и мы наконец загрузили только видимые маркеры и загрузили / разгрузили их, когда пользователь выполняет панорамирование или масштабирование через AJAX. это довольно легко реализовать с помощью событий moveend и zoomend.

 // Listeners

 GEvent.addListener(map2, "moveend", function() {            
         map2.clearOverlays();
         // Load markers for the current bounds and current zoom level 
         loadMarkers(map2,map2.getBounds(),map2.getBoundsZoomLevel(map2.getBounds()));
 });

 GEvent.addListener(map2, "zoomend", function() {
        map2.clearOverlays();
        // Load markers for the current bounds and current zoom level 
       loadMarkers(map2,map2.getBounds(),map2.getBoundsZoomLevel(map2.getBounds()));
 });

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

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

http://code.google.com/intl/en/apis/maps/documentation/javascript/examples/overlay-simple.html

1 голос
/ 08 сентября 2011

Можно попробовать,

  1. Кластеризация на стороне сервера ( Пример )
  2. Отображение маркеров на сервере ( Статья: Слишком много маркеров )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...