我试图激活一个互动时,鼠标上方是在某些功能。
它很有效所以..。问题是,如果你移动你的鼠标缓慢,互动保持活跃。
它是OL3上的一个bug,还是应该以另一种方式进行呢?
代码:http://jsfiddle.net/gmaq54dm/3/
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);
});谢谢
发布于 2016-07-26 13:58:22
这是应用程序中的一个bug,而不是OpenLayers中的错误。你需要确保你只点击-检测功能从你的矢量层,而不是从抽签层。将forEachFeatureAtPixel函数更改为
var feature = map.forEachFeatureAtPixel(e.pixel, function(feature, layer) {
return feature;
}, null, function(layer) {
return layer == vectorLayer
});最后一个参数添加了一个层过滤器,只对向量层上的命中检测特征进行检测.
更新的、工作的JSFiddle:http://jsfiddle.net/gmaq54dm/4/
发布于 2016-07-26 09:16:18
我同意“jonatas”,它似乎是个bug。
不过,有个解决办法似乎能胜任你的工作。
vectorSource.forEachFeatureInExtent(,然后使用鼠标坐标创建一个小矩形,并在每个方向上添加几米。这将确保您的鼠标"mbr“属于功能范围。请注意,我使用+-5米的鼠标坐标来构建mbr。你必须调整以满足你的要求。检查小提琴在这里
https://stackoverflow.com/questions/38573214
复制相似问题