Markerclusterer — инициирование события щелчка определенного маркера на основе его «идентификатора» в непрерывном массиве маркеров.

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

markers[marker.id] = marker;

(Где marker.id — это свойство, установленное при рисовании маркера из JSON, которое соответствует записи пользователя в моей базе данных)

Затем вызов:

google.maps.event.trigger(markers[id], 'click');

(Где «id» — это идентификатор пользователя, для которого я хочу щелкнуть маркер)

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

...MarkerClusterer работает, когда я загружаю свой массив маркеров следующим образом:

markers.push(marker);

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

Итак, кажется, мне нужен способ найти маркер .indexOf в непрерывном массиве маркеров на основе marker.id...

Любая помощь приветствуется.


person christian    schedule 26.09.2012    source источник


Ответы (1)


У вас есть как минимум 2 варианта:

  1. перебирать «непрерывный» массив маркеров в поисках того, который имеет правильный идентификатор (неэффективно, требует дополнительной обработки с большим количеством маркеров), а затем запускать событие щелчка по нему.
  2. также создайте свой ассоциативный массив, используйте его для запуска события щелчка (неэффективно, требует памяти для дополнительного массива)
person geocodezip    schedule 26.09.2012
comment
Спасибо за это. Я подумал, а как насчет того, чтобы щелкнуть имя пользователя (в моем списке пользователей рядом с картой) просто переместить карту на широту/долготу пользователя (загруженную из базы данных), где, конечно же, будет маркер... этого может быть достаточно само по себе, но возможно ли каким-то образом вызвать событие щелчка в центре представления карты? (нажав на маркер, который там) ? Любой хакерский способ сделать это или что-то еще? - person christian; 29.09.2012