1

У меня есть два вида информации о геолокации: одно точное местоположение, другое - апроксимированная геолокация уровня региона. Когда я показываю эту информацию на карте, я хотел бы иметь возможность использовать другой тип маркера для каждого типа местоположения, точное местоположение будет зеленым, а приблизительное местоположение будет синим. Я использую MarkerClusterer для группировки маркеров в один пузырь, но мне нужны два MarkerClusterers, один для приближенных местоположений, другой для точных мест. Таким образом, мой MarkerCluster является одним для каждого типа геолокации.Два типа маркеров в Картах Google с использованием MarkerClusterer

Моей проблемы: иногда, два Кластеры перекрываются, которым может привести в замешательство:

Image with low zoom

Как вы можете видеть, это показывает, что у меня есть 7 маркеров там (вот это синее, но это действительно зеленый маркер, поскольку эти геолокации являются точным видом).

Zoomed in image

Но, масштабирование, у меня есть 9, потому что второй кластер был под первым (обратите внимание, что на данный стенде Кластеры имеет тот же цвет, он должен был быть зелеными (7) и синими (2) - так что пользователь может быть уверен, что местоположения (2) приблизительны)

Любые идеи о том, как я могу создать кластер кластеров? Или другой подход, позволяющий пользователю узнать, что есть два вида информации?

ответ

4

Если у вас есть только два (или несколько) классов маркера, тогда один из подходов - создать второй экземпляр MarkerClusterer. Таким образом, позволяет иметь два набора опций, где стили (не показано), которые отличаются:

var mcOptions1 = {gridSize: 40, styles: clusterStyles1, maxZoom: 19};  
var mcOptions2 = {gridSize: 40, styles: clusterStyles2, maxZoom: 19 }; 

Тогда вы можете создать две отдельные массивы маркеров, говорят markers1 и markers2, что в моем случае зависит от статуса атрибута в маркера:
(обратите внимание, что каждый маркер добавляется к карте и, как обычно, не показан)

// push to the array, markers[] 
    switch(status) 
    { 
    case 'Include': 
     markers1.push(marker); 
     break; 
    case 'Exclude': 
     markers2.push(marker); 
     break; 
    default: 
     markers1.push(marker); 
    }; 

Наконец, создайте два экземпляра MarkerClusterer каждый с отдельными массивами и опциями

-
var markerClust1 = new MarkerClusterer(map, markers1, mcOptions1); 
var markerClust2 = new MarkerClusterer(map, markers2, mcOptions2); 

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

я использовать позже MasterClusterPlus, а не earlierr MasterClusterer, но я не вижу никаких причин, что этот подход не будет работайте с более ранней версией.

2

Я имею дело с этой проблемой прямо сейчас. Вы можете использовать то, что сказал qurn, и изменить стиль кластерного маркера, чтобы значки не пересекались.

 var clusterStyles = [ 
     { 
      url: 'http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/images/conv30.png', 
      height: 27, 
      width: 30, 
      anchor: [3, 0], 
      textColor: '#11ffbb', 
      textSize: 10, 
      offsetX: 20, 
      offsetY: 20 
      }, { 
      url: 'http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/images/conv40.png', 
      height: 36, 
      width: 40, 
      anchor: [6, 0], 
      textColor: '#ff0000', 
      textSize: 11, 
      offsetX: 20, 
      offsetY: 20 
      }, { 
      url: 'http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/images/conv50.png', 
      width: 50, 
      height: 45, 
      anchor: [8, 0], 
      textSize: 12, 
      offsetX: 20, 
      offsetY: 20 
      } 
     ]; 

     var mcOptions = { 
      styles: clusterStyles 
     }; 

    var markerCluster = new MarkerClusterer(map, markers, mcOptions); 

Затем установите свойства «offsetX» и «offsetY». Ex: Если у вас есть 4 категории/группы, вы можете использовать смещение: -20, -20 | -20,20 | -20 | 20,20 Цель состоит в том, чтобы получить значки вокруг вашей точки.

Если вам это не поможет, взгляните на Google Maps Spiderfier.

Надеюсь, это помогло.

Смежные вопросы