代码之家  ›  专栏  ›  技术社区  ›  user3523426

Openlayers 3 for EachFeatureAtPixel对于Points无法正常工作

  •  0
  • user3523426  · 技术社区  · 9 年前

    我需要使用OpenLayers 3实现“点击功能”功能。它适用于所有类型的功能,但当使用“点”时,当我点击离中心足够远(离边界足够近)时,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 回复  |  直到 9 年前
        1
  •  0
  •   Jonatas Walker    9 年前

    您正在寻找:

    map.on('click', function(evt) {
      var feature = map.forEachFeatureAtPixel(evt.pixel, function(ft){return ft;});
      if (feature) {
        // ...
      }
    });
    
        2
  •  0
  •   Holt 111111    9 年前

    改变

    var pixel = map.getEventPixel(evt.originalEvent);   
    

    var pixel = evt.pixel;   
    
        3
  •  0
  •   user3523426    9 年前

    点几何图形的问题“隐藏”在其特性中。它使用renderBuffer,默认为100px。如果几何体的半径较大,则必须手动增加特性。