下有可選擇的圖層我有一個OpenLayers地圖,其中包含一個柵格基礎圖層,一個矢量圖層和一個標記圖層。它們以正確的順序顯示正確,並且矢量頂部的標記很好。強制OpenLayers標記圖層頂部繪製,並在
但是,當我添加SelectFeature控件並將其指向矢量圖層時,它突然被繪製在標記圖層上方,儘管所有努力都會提高標記圖層或設置Z指數。看起來SelectFeature控件會覆蓋所有繪圖順序設置。這是設計,還是我可以克服這個莫名其妙?
的層定義:
var baselayer = new OpenLayers.Layer.WMS('Norden',
'http://{myarcgisserver}/ArcGIS/services/mylayer/MapServer/WMSServer', {
layers :'1,2',
transparent :false,
width :'auto',
height :'auto',
filter :null
}, {
isBaseLayer: true,
singleTile :true,
ratio :1,
alpha :false,
transitionEffect :'resize'
});
var vectorLayer = new OpenLayers.Layer.Vector("Work orders", {
projection: new OpenLayers.Projection("EPSG:2400"),
strategies: [new OpenLayers.Strategy.Fixed(), refresh],
protocol: new OpenLayers.Protocol.HTTP({
url: "/WorkOrder/WorkOrders.ashx?output=geojson",
format: new OpenLayers.Format.GeoJSON()
})
});
var markerlayer = new OpenLayers.Layer.Markers("Markers", {
projection: new OpenLayers.Projection("EPSG:2400"),
displayInLayerSwitcher: false
}
);
控制定義:
var selectctrl = new OpenLayers.Control.SelectFeature(
vectorLayer,
{
clickout: true,
toggle: false,
multiple: false,
hover: false,
toggleKey: "ctrlKey", // ctrl key removes from selection
multipleKey: "shiftKey", // shift key adds to selection
box: false
}
);
激活:(沒有這一點,這些層在正確的順序繪製)
map.addControl(selectctrl);
selectctrl.activate();
編輯: 實測這在OpenLayers.Handler.Feature中,「moveLayerToTop」的感覺就像罪魁禍首......會試圖克服它,但如果有人知道這是不可能的,請讓我知道!
/**
* Method: activate
* Turn on the handler. Returns false if the handler was already active.
*
* Returns:
* {Boolean}
*/
activate: function() {
var activated = false;
if(OpenLayers.Handler.prototype.activate.apply(this, arguments)) {
this.moveLayerToTop();
this.map.events.on({
"removelayer": this.handleMapEvents,
"changelayer": this.handleMapEvents,
scope: this
});
activated = true;
}
return activated;
},
你先生是某種天才! – Johnny 2011-03-11 10:53:40
@Johnny:哈哈,謝謝!你讓我今天一整天都感覺很好! :-) – 2011-03-11 14:29:17