簡體   English   中英

在OpenLayers中,將1層保留在另一層之上。 (Z軸)

[英]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 }
        });

同樣 ,我想將藍色標記隱藏在紅色標記層后面。

您可以按照ilia choly所述更改圖層的順序。

或者,如果要使用zIndexing,則必須將所有要素放到一個圖層中 ,因為zIndexing僅在單個圖層中完成。

看一下有關樣式的簡單示例該示例也使用zIndexing。 它在地圖中隨機創建一些點。 如果縮小,則很有可能兩個圓圈重疊,如果將鼠標懸停在一個圓圈上,它將突出顯示並放在頂部。

因此,無論何時選擇一個點,都希望突出顯示具有不同顏色的標記? 用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM