Всегда ли кластеры меток Google Map загружают все метки перед кластеризацией?

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

У нас есть компания, которая разрабатывает для нас веб-сайт с фотографиями, который также будет включать карту мира с изображениями с метками, на которые можно кликать. Поскольку есть тысячи фотографий, имеет смысл иметь на карте «кластерные» метки, особенно при уменьшении масштаба на глобальном, континентальном уровне и уровне штата — становящиеся отдельными маркерами по мере приближения. Разработчик указал, что из-за Google ограничение, ВСЕ отдельные маркеры загружаются сначала, а ЗАТЕМ объединяются в разделы. Что проблематично, поскольку замедляет работу сайта (каждая метка имеет уменьшенное изображение).

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

Если все маркеры ДЕЙСТВИТЕЛЬНО должны загружаться изначально, то нам, вероятно, нужно выяснить, как загружать только определенные регионы за раз, чтобы сократить время загрузки веб-сайта. Есть ли способ назначить кластеры регионам? На данный момент у разработчика есть кластеры и маркеры, закодированные для их стран, но нам нравится идея позволить им группироваться из-за местоположения в целом или регионов. Хотим уточнить регионы. Например, если бы мы хотели просто создать сетку для всей карты, а затем пользователь щелкнул бы секцию сетки, чтобы просмотреть все метки только в этой секции.

Поскольку эти веб-разработчики больше кодеры, чем «мапперы», я надеялся, что у некоторых из вас, очень умных людей, могут быть предложения. Спасибо заранее

Сара


person user1497162    schedule 13.10.2015    source источник


Ответы (1)


Это неверно (когда вы имеете в виду https://googlemaps.github.io/js-marker-clusterer/docs/reference.html )

Маркер (включая значок....ваш эскиз) не будет загружен до тех пор, пока его map-свойство не будет установлено в google.maps.Map-экземпляр.

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

Демонстрация: (создает 500 маркеров и считает 1 раз для каждого маркера, когда свойство map изменяется на google.maps.Map . Когда вы посмотрите на консоль разработчика->сеть, вы увидите, что даже все эти маркеры/иконка не будут загружены полностью, у меня изначально будет запрошено около 5-10 изображений):

function initialize() {
        var goo         = google.maps,
            map         = new goo.Map(document.getElementById('map'), {
                                  zoom: 3,
                                  center: new google.maps.LatLng(0,0),
                                  noClear:true
                          }),
            markers     = [],
            randLatLng  = function(){
                            return new goo.LatLng(((Math.random() * 17000 - 8500)/100),
                                                  ((Math.random() * 36000 - 18000)/100));
                         },
            count       = document.getElementById('count');
        
        map.controls[goo.ControlPosition.TOP_CENTER].push(count);
        
        for (var i = 0; i < 500; i++) {
          
          var marker = new google.maps.Marker({
            position: randLatLng(),
            icon: 'https://chart.googleapis.com/chart?chst=d_bubble_text_small&chld=bbT|'+i+'|FF8|000' 
          });
          (function(m){
            var listener=google.maps.event.addListener(m,'map_changed',function(){
            if(this.getMap()===map){
              count.firstChild.data=parseInt(count.firstChild.data,10)+1
              google.maps.event.removeListener(listener);
            }
          });
          }(marker));
          
          markers.push(marker);
        }
        var markerCluster = new MarkerClusterer(map, markers);
      }
      google.maps.event.addDomListener(window, 'load', initialize);
html,body,#map{height:100%;margin:0;padding:0;}
#count{background:tomato;padding:8px;font:bold 1.3em bold Monospace !important}
#count::after{content:' of 500 markers added to map'}
<div id="map"><div id="count">0</div></div>
  <script src="https://maps.googleapis.com/maps/api/js?v=3"></script>
    <script src="https://googlemaps.github.io/js-marker-clusterer/src/markerclusterer_compiled.js"></script>

person Dr.Molle    schedule 14.10.2015
comment
Спасибо доктор Молле! Вы дали мне надежду! Я действительно ценю, что вы нашли время, чтобы объяснить это. - person user1497162; 14.10.2015