1

私は現在、Google Maps MarkerClusterer v3 (http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/docs/reference.html) を使用しており、これまでのところその機能に非常に感銘を受けています。 .

ただし、マップに追加機能を追加したいと考えています。ユーザーがマーカーのリストにカーソルを合わせると、マーカー イメージが変更されます。これは、マーカーがクラスター化されていない場合にうまく機能しますが、Clusterer も使用しているため、特定のマーカーが属するクラスターを返すことができる必要があります。

これが可能かどうか誰にもわかりますか?API ドキュメントを確認しましたが、クラスターの配列を返すメソッドが見つかりませんでした。

基本的に、ここに私がする必要があることの疑似コードがあります:

function changeClusterIcon(the_marker)
{
    var clusters = _CLUSTERER.getClusters();
    var clusters_length = clusters.length;
    var marker_pos = the_marker.getPosition().toString();

    for(var i = 0; i < clusters_length; i++)
    {
        var this_cluster = clusters[i];
        var the_markers = this_cluster.markers.length;

        for(var j = 0; j < the_markers; j++) 
        {
            var this_marker = this_cluster.markers[i];
            if(this_marker.getPosition().toString() == marker_pos)
            {
                return this_cluster;
            }
        }
    }

    return false;
}
4

2 に答える 2

2

ライブラリは、MarkerClustererクラスターを取得する方法を提供しません。ただし、ライブラリの拡張バージョンMarkerClustererPlusがあり、より多くの機能を提供します。MarkerClustererPlus api-docを使用すると、この関数を使用してクラス インスタンスMarkerClusterer.getClusters()を取得できます。次に、関数を使用して、その 内にあるマーカーのを取得できます。そして、それで、あなたは前進するために必要なものを持っているはずです.ArrayClusterCluster.getMarkers()ArrayCluster

于 2012-05-13T18:03:20.317 に答える
0

あなたの機能はほぼ正しいです。適切なバージョンは次のとおりです。

function changeClusterIcon(the_marker)
{
var clusters = _CLUSTERER.getClusters();
var clusters_length = clusters.length;
var marker_pos = the_marker.getPosition().toString();

for(var i = 0; i < clusters_length; i++)
{
    var this_cluster = clusters[i];
    var the_markers = this_cluster.markers_.length;

    for(var j = 0; j < the_markers; j++) 
    {
        var this_marker = this_cluster.markers_[j];
        if(this_marker.getPosition().toString() == marker_pos)
        {
            return this_cluster;
        }
    }
}

return false;
}

したがって、markersプロパティはMarkers_として呼び出す必要があり、2 番目の foreach はiの代わりにjを使用します。

于 2015-03-09T05:35:26.737 に答える