获取已在 OpenLayers 3 中单击的图层的特征属性
Get a feature properties for the layer which has been clicked in OpenLayers 3
我正在使用 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
事件?有什么帮助吗?
您不能为每个图层指定一次单击,但根据 forEachFeatureAtPixel 函数的 api 文档:
Returns:
Callback result, i.e. the return value of last callback execution, or the first truthy callback return value.
因此,如果您在第一次调用回调时返回一个值,您将获得您命中的第一个功能:
var feature = map.forEachFeatureAtPixel(evt.pixel, function (feature, layer) {
return feature;
});
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);
}
};
代码段未测试
相关文章:
- 更改图层中单个矢量特征的图标
- 谷歌地图热图图层点半径
- 谷歌地图-更改图层图标大小
- 如何通过ID获取图层对象
- CS5隐藏图层的速度非常慢
- 开放图层导出为 KML 并保留我的地图样式
- 传单问题:使折线的图层组不可单击
- 将图层添加到另一个图层
- 图层删除(图像);在 Kinetic.js 中不起作用
- HTML5 Canvas 的初学者,使用图层
- 如何在“控制缩放”下的“打开图层”上添加一些图像
- 无法让 jQuery floatThead 处理嵌入在选项卡式图层中的表
- 如何在开放层 3 中设置矢量图层选择的样式
- 添加支持异步重新加载的 Web 图层
- 3d图层滑块Wordpress插件:编辑3d颜色
- 在jQuery中移动DOM元素(图层滑块)
- 获取已在 OpenLayers 3 中单击的图层的特征属性
- 如何在打开的图层中高亮显示选定的特征3
- 在开放图层3中获得给定特征的图层
- OpenLayer3 中的旋转矢量图层特征