4

ここのチュートリアルに従って、任意のズーム レベルで、markercluster の個々のクラスターに情報ウィンドウを追加しました。 http://krisarnold.com/2010/10/15/adding-info-windows-to-map-clusters-with-google-maps-api-v3/

それぞれのクラスターに含まれるマーカーの情報 (たとえば、markercluster オブジェクトをクリックすると、情報ウィンドウに表示されるリストに「タイトル」が表示される) を追加したいと考えています。

したがって、ビュー内の特定のズーム レベルで 3 つのクラスターがあり、それぞれに 5 つのマーカーが含まれているとします。その特定のクラスターに集約された 5 つの (markercluster オブジェクト内の合計 15 のマーカーのうち) マーカーのタイトルのリストを表示するにはどうすればよいですか?

たとえば、クラスター内に 3 つのマーカーがある場合、これを情報ウィンドウに表示するにはどうすればよいですか? タイトルマーカー1 タイトルマーカー2 タイトルマーカー3

編集: ここで見られるように http://www.blogwave.de/wp-content/uploads/2009/05/marker_cluster.png すべての異なるクラスターは、1 つの markercluster オブジェクトのインスタンスです。したがって、以下の回答のいずれかに記載されているように、markercluster オブジェクトの getmarkers ルーチンを使用すると、すべてのマーカーのリストが取得されます。

私が欲しいのは、たとえば、最初に左から18でマークされたクラスター内の合計マーカーから18マーカーのみのリストを取得することです。

4

1 に答える 1

13

残念ながら、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);

});

編集:質問の編集に応じて更新されました。

于 2011-09-05T16:28:01.973 に答える