[英]In OpenLayers, Getting 1 Layer to stay over the other. (Z-Axis)
我有这张地图,在它上面显示一些红色标记,并且每当从列表中选择一个位置时,当前标记就会被涂成蓝色 ,并且地图会围绕它居中。
我通过两层来实现此目的-一层是在开始时绘制的红色标记,另一层是从列表中选择一个点时都会重新绘制的标记。
我想定义红色标记层将始终出现在蓝色标记层上方。 有效隐藏“当前标记”指示。 (原因很复杂)
该链接指向的页面以我不想要的方式工作。 蓝色层位于红色层的顶部。 我试图通过定义vector和layers.addFeature
函数的graphicZIndex
属性来颠倒顺序。
我显然做错了什么,也许有人可以指出我的意思。 我定义z轴的方式:
currentPointLayer = new OpenLayers.Layer.Vector("Selected Point Layer", {
style : {
externalGraphic : 'marker-blue.png',
graphicHeight : 15,
graphicWidth : 15,
graphicZIndex : 1
},
rendererOptions: { zIndexing: true }
});
同样 ,我想将蓝色标记隐藏在红色标记层后面。
因此,无论何时选择一个点,都希望突出显示具有不同颜色的标记? 用2层管理它确实是一个过大的杀伤力。 您应该能够使用以下样式定义矢量层:
var currentPointLayer = new OpenLayers.Layer.Vector("Selected Point Layer", {
styleMap: new OpenLayers.StyleMap({
externalGraphic : '${markerUrl}',
pointRadius: 20
})});
map.addLayer(currentPointLayer);
然后,您必须将每个功能的属性“ markerUrl”(即feature.attributes.markerUrl)设置为“ marker-red.png”-这将是所有功能的初始状态。
然后,只要选择了特征,就将选定特征的markerUrl属性更改为'marker-blue.png'和(重要)调用
currentPointLayer.redraw();
显然,在选择新功能时,您还必须将先前选择的功能设置为“ marker-red.png”。
在您的init_map()
函数中,您要在蓝色标记层之前添加红色标记层。 尝试切换它们。
preparePointsOnMap(map, points); //red marker
if (!map.getCenter()) {
map_set_center(lon, lat, mZoom); //blue marker
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.