首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Openlayers 3-交互和交互

Openlayers 3-交互和交互
EN

Stack Overflow用户
提问于 2016-07-25 16:38:24
回答 2查看 3.9K关注 0票数 3

我试图激活一个互动时,鼠标上方是在某些功能。

它很有效所以..。问题是,如果你移动你的鼠标缓慢,互动保持活跃。

它是OL3上的一个bug,还是应该以另一种方式进行呢?

代码:http://jsfiddle.net/gmaq54dm/3/

代码语言:javascript
复制
olMap.on("pointermove", function (e) {
    if (e.dragging) {
        return;
    }
    var map = e.map;
    console.log(e.pixel);
    var feature = map.forEachFeatureAtPixel(e.pixel, function(feature, layer) {
      return feature;
    });
    var hit = (feature) ? true : false;
    console.log(hit);
    olDraw.setActive(hit);
});

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-26 13:58:22

这是应用程序中的一个bug,而不是OpenLayers中的错误。你需要确保你只点击-检测功能从你的矢量层,而不是从抽签层。将forEachFeatureAtPixel函数更改为

代码语言:javascript
复制
var feature = map.forEachFeatureAtPixel(e.pixel, function(feature, layer) {
  return feature;
}, null, function(layer) {
  return layer == vectorLayer
});

最后一个参数添加了一个层过滤器,只对向量层上的命中检测特征进行检测.

更新的、工作的JSFiddle:http://jsfiddle.net/gmaq54dm/4/

票数 3
EN

Stack Overflow用户

发布于 2016-07-26 09:16:18

我同意“jonatas”,它似乎是个bug。

不过,有个解决办法似乎能胜任你的工作。

  1. 避免多行字符串。这使得ol3在鼠标超出该特性时进行验证变得更加复杂。
  2. 使用vectorSource.forEachFeatureInExtent(,然后使用鼠标坐标创建一个小矩形,并在每个方向上添加几米。这将确保您的鼠标"mbr“属于功能范围。请注意,我使用+-5米的鼠标坐标来构建mbr。你必须调整以满足你的要求。

检查小提琴在这里

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38573214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档