Google Maps MarkerClusterer v3返回标记群集

时间:2012-05-09 12:03:01

标签: javascript google-maps markerclusterer

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

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

有人知道这是否可行?我检查了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;
}

2 个答案:

答案 0 :(得分:2)

MarkerClusterer库未提供检索群集的方法。但是有一个增强版本的库MarkerClustererPlus,它提供了更多功能。使用MarkerClustererPlus api-doc,您可以使用MarkerClusterer.getClusters()函数来检索Array类实例的Cluster。然后,您可以使用Cluster.getMarkers()函数检索ArrayCluster个标记。有了它,你应该拥有前进所需的一切。

答案 1 :(得分: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;
}

因此标记属性应该被称为标记_ ,第二个foreach使用 j 而不是 i