Добавление тысяч маркеров Google Map API V3

В настоящее время я собираю демонстрационное приложение, которое должно отображать 28 000 маркеров на карте без использования какой-либо кластеризации. Проблема в том, что добавление маркера на карту для такого количества занимает так много времени, что браузер вылетает! Вот текущий процесс

- Извлекает точки карты из базы данных, включая LAT и LONG (не нужно геокодировать) - for циклически перебирает каждое из возвращаемых значений и делает следующее:

  var marker = new google.maps.Marker({
                 position: point,
                 animation: google.maps.Animation.DROP,
                 map: map,
                 title: value.Title,
                 icon: icons['store']
             });

             google.maps.event.addListener(marker, 'click', function () {
                 var hidingMarker = currentPlace;
                 var slideIn = function (marker) {
                     $('#Name', info).text(place.Title);
                     $('#Phone', info).text(place.Description);
                     $('#Address', info).text(place.Proper_Address);
                     $('#LastSale', info).text("Last Sale:" + place.Last_Sale);
                     info.animate({ right: '0%' });
                 }

- маркеры выпадают, и пользователь может щелкнуть любой из них, чтобы увидеть немного информации

Есть ли более эффективный способ сделать это, чтобы можно было показать 28 000 без необходимости их кластеризации? Я нашел несколько сценариев, написанных людьми для обработки этого раньше, но все они для API V2. Любые ссылки или код приветствуются! Благодарность!


person mscard02    schedule 30.03.2012    source источник
comment
Каков вариант использования? Чем 28000 маркеров полезны пользователю? Особенно, если они должны выбрать один, чтобы щелкнуть по нему. Гораздо лучше ограничить ваши маркеры областью просмотра и добавлять/удалять по мере необходимости.   -  person Andrew Leach    schedule 30.03.2012
comment
Я бы сказал, что 28 КБ всего (независимо от того, добавление маркера или создание бу) приведет к сбою любого браузера. Поэтому мой совет: не делайте этого. FusionTables может быть вариантом   -  person Dr.Molle    schedule 30.03.2012
comment
вариант использования - построить цветовую координату всех магазинов по всему миру с различной статистикой. я создал маленькую точку, чтобы заменить более крупный маркер, который используется по умолчанию. Это должно сработать только один раз, оно никогда не будет общедоступным для наших пользователей.   -  person mscard02    schedule 30.03.2012
comment
Это никогда не будет публичным открытием вопросов по Условиям обслуживания.   -  person Andrew Leach    schedule 30.03.2012
comment
быть придурком, когда люди указывают на вещи, о которых вы, возможно, не думали, — не лучший способ получить помощь от людей.   -  person Scott M.    schedule 30.03.2012
comment
Вот пример с 10 000 маркеров, дополнительная информация здесь. В качестве альтернативы может быть полезна кластеризация маркеров.   -  person ashleedawg    schedule 18.10.2019


Ответы (2)


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

http://www.google.com/fusiontables/Home/

person javram    schedule 30.03.2012
comment
похоже, что моим ответом будут таблицы слияния, спасибо, что направили меня в правильном направлении. - person mscard02; 30.03.2012
comment
Я использовал Fusion Tables, и он был разработан для такого типа задач. - person Eric Bridger; 30.03.2012
comment
Непонятно, как можно использовать Fusion Tables. Во всяком случае, Google закрывает его в декабре 2019 года. - person Jonathon Hill; 14.07.2019

Я предполагаю, что вы не буквально показываете 28 000 на экране одновременно? Будет видно только подмножество?

Если это так, почему бы вам просто не сделать запрос к серверу с отображаемым диапазоном координат, а затем просто построить их? Существуют события карты, которые позволят вам узнать, когда нужно обновить маркеры, и вы сможете избежать одновременного появления слишком большого количества объектов в браузере.

person Ben Parsons    schedule 30.03.2012
comment
мне действительно нужно 28000 на экране одновременно. Я создал маркер клиента, который представляет собой крошечную точку, которая не дает изображениям перекрываться, насколько это возможно. - person mscard02; 30.03.2012