【发布时间】:2016-02-05 11:16:09
【问题描述】:
我正在使用 Geoserver 开发 OpenLayers 3,我有四个矢量图层,我正在使用 singleclick 事件来获取每个要素的属性并在弹出窗口中显示它们。
现在我的问题是,当我从最高层单击一个特征时,我会从所有较低层中获取所有属性,我使用了forEachFeatureAtPixel,但我不知道如何为每一层指定它!
这是我的代码:
var OpenMeters = function (evt) {
content.innerHTML = "";
var feature = map.forEachFeatureAtPixel(evt.pixel,
function (feature, layer) {
if (feature) {
var coord = map.getCoordinateFromPixel(evt.pixel);
var objeto = feature.getProperties(),propiedades;
for (propiedades in objeto)
{
content.innerHTML += '<b>' + propiedades + '</b> : <i><b>'+ objeto[propiedades]+'</b></i><br />';
}
overlay.setPosition(coord);
} else {
overlay.setPosition(undefined);
}
});
};
map.on('singleclick', OpenMeters);
var select = new ol.interaction.Select();
map.addInteraction(select);
如何为每一层指定singleclick 事件?
有什么帮助吗?
【问题讨论】:
-
至少对我来说,不清楚你想要什么。也许你想要一个图层过滤器?见gis.stackexchange.com/a/127072/50718。
-
我看到并尝试了它.. 但它只为我放入过滤器的图层提供了属性,如果我点击另一个图层,它不会提供任何属性。在我单击的同一个像素中,我在彼此下方具有三个特征,当我单击最高层的一个特征时,我想要在这一层中为我提供此特征的属性,而不是像素中特征的所有预定义,是现在清楚了吗?
-
并非如此。也许你把它放在了小提琴上。
标签: javascript openlayers-3 geoserver