我目前正在使用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;
}
答案 0 :(得分:2)
MarkerClusterer
库未提供检索群集的方法。但是有一个增强版本的库MarkerClustererPlus,它提供了更多功能。使用MarkerClustererPlus api-doc,您可以使用MarkerClusterer.getClusters()
函数来检索Array
类实例的Cluster
。然后,您可以使用Cluster.getMarkers()
函数检索Array
内Cluster
个标记。有了它,你应该拥有前进所需的一切。
答案 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 。