Openlayers 3 forEachFeatureAtPixel对点

时间:2016-03-11 12:13:17

标签: javascript openlayers-3

我需要实施"点击功能"使用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");

当你开始点击边框时,你会看到圆圈的中心,你会看到,圆圈离边界很远。请问,有人告诉我,我做错了吗?

3 个答案:

答案 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。如果几何体的半径较大,则必须手动增加属性。