我需要实施"点击功能"使用OpenLayers 3的功能。它适用于所有类型的功能,但是当使用" Point"时,当我从中心点击足够远(足够靠近边框)时forEachFeatureAtPixel失败。我在这里创建了一个例子 - https://jsfiddle.net/mstrop/4gvLhfje/7/。
var pixel = map.getEventPixel(evt.originalEvent);
var found = false;
map.forEachFeatureAtPixel(pixel, function(feature, layer)
{
found = true;
});
console.log((found?"":"not ") + "found");
当你开始点击边框时,你会看到圆圈的中心,你会看到,圆圈离边界很远。请问,有人告诉我,我做错了吗?
答案 0 :(得分:0)
更改
var pixel = map.getEventPixel(evt.originalEvent);
到
var pixel = evt.pixel;
答案 1 :(得分:0)
您正在寻找:
map.on('click', function(evt) {
var feature = map.forEachFeatureAtPixel(evt.pixel, function(ft){return ft;});
if (feature) {
// ...
}
});
答案 2 :(得分:0)
点几何的问题在其属性中是“隐藏的”。它使用renderBuffer,默认为100px。如果几何体的半径较大,则必须手动增加属性。