- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
假设我想制作一个网页,显示每个 parking 场剩余的大概免费 parking 位数量(出于保密原因,我不能提供我实际在做什么的任何细节)。为此,我使用了 Google map 和 Markerclusterer。因此,对于剩余 parking 位少于 5% 的 parking 位,我想显示一个红色标记,对于有 5%-25% parking 位的 parking 位,我会显示一个黄色标记,对于剩余 parking 位超过 25% 的 parking 位,我想制作它是绿色的。到目前为止,我可以制作这些标记并将它们聚类,但这是棘手的部分(和问题本身):
如何根据其中的标记制作一个簇图标?
例如:
当缩小时,我想显示所有 4 个都是红色的集群(最差的)。放大时,我会得到 2 个簇(A+B 和 C+D)。我希望第一个簇 (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);
现在我只有红色和绿色标记,应该足以测试它了。但是这个集群现在的行为如下:
编辑
来自 this link我发现我可能需要的是 Calculator 。所以我尝试了一下,但仍然没有运气(尽管我认为我越来越接近了。实际上,我希望我现在非常接近解决方案)。
所以我试着改变我的选择:
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');
来测试它。
我希望这些附加信息能帮助您帮助我找到解决方案。
最佳答案
正如我在编辑中提到的,我非常接近解决方案。所以我今天又(重新)看了一下代码,检查了 docs再次注意到 ClusterIconInfo 中的以下内容:
index number The index plus 1 of the element in the styles array to be used to style the cluster icon.
所以基本上我通过将 index 递增一个来解决这个问题(我还将 Calculator 移动到一个 var 然后使用 setCalculator() MarkerClusterer 本身的方法)。所以我的代码变成了:
var calc = function(markers, numStyles) {
for (var i = 0; i < markers.length; i++) {
if (markers[i].getIcon().indexOf("redP") > -1) {
return {text: markers.length, index: 2};
}
}
return {text: markers.length, index: 1};
}
var mcOptions = {gridSize: 50, maxZoom: 15, styles: [{
height: 46,
url: "img/greenC.png",
width: 46
},
{
height: 46,
url: "img/redC.png",
width: 46
}]
};
var markerCluster = new MarkerClusterer(map, markers, mcOptions);
markerCluster.setCalculator(calc);
现在它就像一个魅力(它应该)。
希望有一天这能对某人有所帮助。
关于javascript - Markerclusterer 根据其中的标记设置标记簇图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27375173/
我在我的项目的主页中为 Google map 使用了 markerclusterer。 我正在显示页面加载图像,直到标记集群完全加载(带有完整的标记总数) 下面的代码对我不起作用。 google.ma
我刚开始使用 Leaflet 和 Marker Clusterer组织标记。 问题 #1: 当点击未成簇的标记时,没有弹出窗口出现。 问题 #2: 当一个集群被点击几次时,该集群内的所有标记都会出现,
由于位置中存储了大量数据/标记,我的 map 非常缓慢,因此我尝试显示标记集群的工作 here 。 Locations 只是一个 C# 字符串数组,其中包含每个标记的名称、纬度和经度。由于某种原因,
我试图用以下方法实现 MarkerCluster (MS)重叠标记簇 (OMS)。一切似乎都运转良好。 但是,我希望修改 OMS 的工作方式,这样如果我单击下面有 2 个点的簇 当我单击任何具有完全相
我将最新版本的 MarkerClusterer 与 Google Maps API v3 一起使用,我想我发现了一个错误! 我的谷歌地图 minZoom 设置为 1。从级别 1 向下缩放到任何级别并返
我在如何在我的 Google map 上显示标记聚类器时遇到了一些麻烦。我尝试了不同的解决方案 here和 here但似乎都不起作用。 这是相关的代码,我得到了 Uncaught TypeError:
我刚刚查看了以下帖子:markerclusterer info windows 这篇文章中有一个我需要的东西,markerclusterer 的鼠标悬停事件。当鼠标悬停在图标上时,我需要更改图标。 我
是否可以更改 MarkerClusterer 中使用的标记的标签?项目?我希望它们显示百分比而不是分组标记的数量。 谢谢 最佳答案 它似乎被硬编码来总结它聚合的标记数量。您可以尝试覆盖此方法或根据其许
可以这么说吧,我对谷歌地图和 javascript 还是很陌生。我一直在将 google store locator 教程与其他一些东西混合在一起。到目前为止,我使用的是 marker cluster
我有一个使用 jquery-ui-map 的网络 map 和 markerclusterer制作谷歌地图的插件。 我筛选出应该显示或不显示的标记,然后更新 map 。 我需要创建一个未聚类标记的列表,
假设我想制作一个网页,显示每个 parking 场剩余的大概免费 parking 位数量(出于保密原因,我不能提供我实际在做什么的任何细节)。为此,我使用了 Google map 和 Markercl
我将标记放入簇中: var markerClusterer = new MarkerClusterer(map, markers, { zoomOnClick : false, max
我试图在用户点击某些按钮时隐藏/显示 markerClusterer: 这是我正在尝试做的: map = new google.maps.Map(document.getElementById
尝试切换 MarkerClusterer (V3) 的可见性: var hydrantsShowing = true; function ToggleHydrants() { var ma
我正在使用 MarkerClusterer。当我在同一位置有两个或多个标记时,API 仅显示 1 个标记 - 最上面的一个。但不知何故,我想显示所有标记,因为每个标记都会打开不同的弹出窗口。我搜索过几
我有流动的情况。 map 上的一些标记位于完全相同的纬度/经度上,因此 MarkerClusterer 缩放不会破坏聚类。我处理了用户点击,但我想为点击的集群设置不同的图像。 我找到了 setStyl
首先我想说:我找不到这个库的支持论坛,所以我想在这里尝试一下。我希望这里允许提出此类问题,并且不需要删除我页面的链接。该链接仅用于查看其工作原理以及哪些部分不起作用。请不要删除它。 现在回答问题:)
所以我有一个应用程序,其中包含带有(数百个)标记的 map 。我使用 Google 提供的 MarkerClusterer.js 来对我的标记进行聚类,并使整个内容更易于查看。我正在使用 API V3
我正在尝试用 this sample code 提供的数据替换我的数据,但我的代码不起作用。我刚刚添加了一个名为 results 的数组,并尝试将其 lat 和 lan 值传递给 map ,但由于某些
它在特定位置显示多个标记。如何显示标记而不是数字?下面给出了代码和输出图像。请帮助我如何获得预期的结果? 注意: 4 个标记具有相同的纬度和经度。我想显示 4 个不同的标记而不是一个标记。 JS代码:
我是一名优秀的程序员,十分优秀!