1

我目前正在使用 Google Maps MarkerClusterer v3 (http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/docs/reference.html),到目前为止,我对该功能印象深刻.

但是,我现在希望在我的地图中添加一个附加功能。当用户将鼠标悬停在标记列表上时,标记图像会发生变化。这在标记未聚类时效果很好,但由于我也在使用聚类器,因此我需要能够返回特定标记所属的聚类。

有谁知道这是否可能?我检查了 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()函数来检索ArrayCluster实例。然后,您可以使用该Cluster.getMarkers()函数来检索其中Array的一个标记Cluster。有了这个,您应该拥有前进所需的一切。

于 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_并且第二个foreach使用j而不是i

于 2015-03-09T05:35:26.737 回答