假设我想制作一个网页,显示每个停车场剩余的大约空闲停车位数量(由于机密原因,我不允许透露实际操作细节)。为此,我使用了Google地图和Markerclusterer。对于剩余停车位少于5%的停车场,我想显示红色标记;对于剩余停车位在5%-25%之间的停车场,我想显示黄色标记;对于剩余停车位超过25%的停车场,我想显示绿色标记。到目前为止,我已经成功制作了这些标记并将它们聚合在一起,但是以下是难点(也是问题所在):
如何使聚合标记取决于其中包含的标记?
例如:
到目前为止,我已经完成了以下工作:
- 停车场A为绿色
- 停车场B为红色
- 停车场C为绿色
- 停车场D为黄色
到目前为止,我已经完成了以下工作:
var mcOptions = {gridSize: 50, maxZoom: 15, styles: [{
height: 46,
url: "///Users/Novarg/Downloads/foundation-5.4.7/img/greenC.png",
width: 46
},
{
height: 46,
url: "///Users/Novarg/Downloads/foundation-5.4.7/img/redC.png",
width: 46
}]};
var markers = [];
for (var i = 0; i < 100; i++) {
var latLng = new google.maps.LatLng(51 + Math.random(),
4 + Math.random());
var marker = new google.maps.Marker({'position': latLng, icon: 'img/greenP.png'});
markers.push(marker);
}
for (var i = 0; i < 20; i++) {
var latLng = new google.maps.LatLng(51 - Math.random(),
4 - Math.random());
var marker = new google.maps.Marker({'position': latLng, icon: 'img/redP.png'});
markers.push(marker);
}
var markerCluster = new MarkerClusterer(map, markers, mcOptions);
}
google.maps.event.addDomListener(window, 'load', initialize);
现在我只有红色和绿色的标记,这应该足以进行测试。但是这个簇现在的行为如下:
- 所有标记少于10个的群集都是绿色的
- 所有标记超过9个的群集都是红色的
修改
从此链接中我发现我可能需要的是计算器。所以我尝试了一下,但还没有成功(虽然我认为我离解决方案很近了。实际上,我希望我现在非常接近解决方案)。
所以我尝试更改我的选项:
var mcOptions = {gridSize: 50, maxZoom: 15, styles: [{
height: 46,
url: "///Users/Novarg/Downloads/foundation-5.4.7/img/greenC.png",
width: 46
},
{
height: 46,
url: "///Users/Novarg/Downloads/foundation-5.4.7/img/redC.png",
width: 46
}],
calculator: function(markers, numStyles) {
for (var i = 0; i < markers.length; i++) {
if (markers[i].getIcon().indexOf("redP.png") > -1) {
return {text: markers.length, index: 1};
}
}
return {text: markers.length, index: 0};
}
};
但是这个计算器从来没有被使用过。我通过在其中放置一个简单的alert('test');
进行了测试。
希望这些额外的信息能够帮助您找到解决方案。