更改openlayers中标记的z-index

时间:2012-06-04 14:37:26

标签: z-index openlayers openstreetmap markers

我有一个带有多个标记的图层,图标相当大,所以它们重叠。通过地图一侧的列表,用户可以选择一个标记,地图将平移(和缩放)到它。但它仍将落后于其他一些制造商。 如何获得个体制造商的z-index并进行设置?获得最高使用的z-index并添加一个,我会很有用。 (另一种解决方案是将标记的总数添加到z-index)

标记(或特征)位于myLib.features数组中。控制台不显示任何z-index类型的函数。

我无法为此找到合适的示例或api函数。

修改

我找到了这个例子:http://dev.openlayers.org/examples/ordering.html 我真的不明白。不知何故,创建的特征通过某些符号化器获取图层给出的下一个z-index。我不知道如何将这种静态排序变成动态排序。

1 个答案:

答案 0 :(得分:3)

试试这个:

首先,确保您使用的是OpenLayers.Layer.Vector图层,而不是OpenLayers.Layer.Markers图层。显然,Markers层是旧闻,所有新开发都在Vector层完成。它有更多的功能。 (我自己浪费了很多时间用Markers图层。)

然后,每个标记都需要是OpenLayers.Feature.Vector对象。构造函数有三个参数,第三个参数称为样式。该样式用于设置图像属性,背景阴影,鼠标悬停文本和z-index,其属性名称为“graphicZIndex”。我认为这就是你要找的东西。

http://dev.openlayers.org/releases/OpenLayers-2.12/doc/apidocs/files/OpenLayers/Feature/Vector-js.html#OpenLayers.Feature.Vector.OpenLayers.Feature.Vector.style

使用addFeatures函数将“标记”(即Vector)添加到Vector图层。并忽略“选项”参数。

http://dev.openlayers.org/releases/OpenLayers-2.12/doc/apidocs/files/OpenLayers/Layer/Vector-js.html#OpenLayers.Layer.Vector.addFeatures

我也找到了示例页面,我发现它也很混乱。它在Vector层的构造函数中设置所有标记的样式(如果省略标记样式,则使用默认值)而不是标记的构造函数。我认为在标记构造函数中设置标记样式更有意义。

要实时更改样式,请使用名为“marker”的OpenLayers.Feature.Vector标记之一并执行此操作。让我们称之为矢量图层“层”。

marker.style.graphicZIndex = 13;
layer.redraw();