Как найти маркеры в отдельных кластерах в объекте кластера маркеров в Google Maps API v3? - PullRequest
4 голосов
/ 01 сентября 2011

Я следовал этому уроку, чтобы добавить информационное окно к отдельным кластерам markercluster при любом уровне масштабирования. http://krisarnold.com/2010/10/15/adding-info-windows-to-map-clusters-with-google-maps-api-v3/

Я хочу добавить информацию о маркерах (например, их «заголовки» в список, отображаемый в информационном окне при нажатии на объекте markercluster.), Содержащийся в соответствующем кластере.

Так что, если у меня есть 3 кластера с определенным уровнем увеличения, у каждого по 5 маркеров внутри него. Как отобразить список заголовков из 5 (из 15 маркеров в объекте markercluster) агрегированных в этом конкретном кластере?

например У меня есть 3 маркера внутри кластера тогда как мне показать это в информационном окне? titlemarker1 titlemarker2 titlemarker3

редактировать : как видно здесь http://www.blogwave.de/wp-content/uploads/2009/05/marker_cluster.png все разные кластеры являются экземпляром одного объекта markercluster. Поэтому, если мы используем процедуру getmarkers объекта markercluster, как упомянуто в одном из ответов ниже, мы получим список всех маркеров.

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

1 Ответ

11 голосов
/ 05 сентября 2011

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

Например, с помощью учебника, на который вы ссылаетесь:

google.maps.event.addListener(markerClusterer, 'clusterclick', function(cluster) {
    var content = '';

    // Convert lat/long from cluster object to a usable MVCObject
    var info = new google.maps.MVCObject;
    info.set('position', cluster.center_);

    //----
    //Get markers
    var markers = cluster.getMarkers();

    var titles = "";
    //Get all the titles
    for(var i = 0; i < markers.length; i++) {
        titles += markers[i].getTitle() + "\n";
    }
    //----


    var infowindow = new google.maps.InfoWindow();
    infowindow.close();
    infowindow.setContent(titles); //set infowindow content to titles
    infowindow.open(map, info);

});

РЕДАКТИРОВАТЬ: Обновлено в ответ на редактирование вопроса.

...