Ushahidi - 如何让缩放变化使标记留在地图上?

时间:2014-06-07 14:31:13

标签: google-maps openlayers ushahidi

我使用的是平台Ushahidi Web-2.7.3,请参阅:http://ti5.net.br/provedorlegal.com.br,当我放大到某个级别时,聚集的标记会从地图中消失。我还在一个旧版本的网站上对此进行了测试,请参阅:http://movimentofichalimpa.org/mapa,其中聚集标记在放大时不会消失,但只是变为未分组,正如群集策略一样。放大时如何让标记保留在地图上?

1 个答案:

答案 0 :(得分:1)

Ushahidi实际上使用OpenLayers - 图像可能来自谷歌,但Javascript库是纯粹的OpenLayers。实际上,这些标记是通过将所谓的上下文添加到OpenLayers.Layer.Vector的样式属性和相关的Cluster.Strategy来生成的。这里有一个很好的例子:OpenLayers cluster example如果您查看Javascript源代码,您将看到它是如何完成的:view-source:http://dev.openlayers.org/releases/OpenLayers-2.13.1/examples/strategy-cluster-threshold.html通过在上下文中定义一个半径StyleMap设定。

您的示例无效的原因是实际上触发了脚本错误,这会阻止执行群集/样式。样式在文件ushahidi.js中定义。如果您打开一个Javascript调试器,您将看到在调用ushahidi.js函数之前触发的错误,以确定集群中的要素数量,从而确定标记的半径。

实际错误是http://ti5.net.br/provedorlegal.com.br/index.php/json/cluster?s=1401591600&e=1404183599&z=9,但我不知道为什么,因为OpenLayers是一个非常难以调试的缩小版本。您可能会发现直接将您的应用程序移动到OpenLayers会有所帮助,因为它更容易调试,而且它也适用于手机,我知道这是人们喜欢使用Ushahidi的原因之一。