Openlayers 3:为什么forEachFeatureAtPixel只返回一个功能

时间:2015-02-09 16:23:04

标签: openlayers-3

我创建了一个文本框,我可以在其中放置坐标X,Y然后我将针移动到该位置并找到那些道路。

引脚移动,但forEachFeatureAtPixel仅返回一个功能而不是四个。我获得的功能也没有NOMBRE属性

我正在使用Openlayer 3和我的WMS服务器地图 正如你在MapInfo(图片右侧)中看到的那样,我得到了所有4个功能。
水平2x" Calle 6"和垂直2x" Calle 1 Norte",并拥有NOMBRE属性。
我使用了mapinfo中相同的x,y,其中所有4个特征都是有效的。

新信息:我的图层是ol.layer.Tile而不是ol.layer.Vector,也许这就是问题(检查)

wmsLyr09 = new ol.layer.Tile({
    source: wmsSource
});

enter image description here

// move the pin to new position
geometry.translate(deltaX, deltaY);

var coordinate = geometry.getCoordinates();
var pixel = map.getPixelFromCoordinate(coordinate);
console.log('pixel: ' + pixel);

var allFeaturesAtPixel = [];
map.forEachFeatureAtPixel(pixel, function (feature) {
    allFeaturesAtPixel.push(feature);
});

// feature[len]:1
console.log("feature[len]:" + allFeaturesAtPixel.length);

//feature[Name]: undefined
feature= allFeaturesAtPixel[0];
console.log("feature[Name]: " + feature.get('NOMBRE')); 

1 个答案:

答案 0 :(得分:1)

在地图中,您可能有两个图层,即WMS图块层和图钉的矢量图层。因此,OpenLayers不了解道路功能。如果您正在致电forEachFeatureAtPixel,那么您将获得OpenLayers所知道的唯一功能:pin。

您要做的是发出WFS GetFeature请求以获取当前引脚位置的功能。看一下这个例子:http://openlayers.org/en/master/examples/getfeatureinfo-tile.html