[英]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.