Javascript OpenLayers矢量功能未高亮显示

Javascript OpenLayers矢量功能未高亮显示,javascript,openlayers,Javascript,Openlayers,我试图使用向量高亮显示层的单击区域: var highlightLayer = new OpenLayers.Layer.Vector("Highlighted Features", { displayInLayerSwitcher: false, styleMap: mystyle }); // the layer is added to the map, GetFeatureInfo controls setup and added etc. …这是GetFeatureIn

我试图使用向量高亮显示层的单击区域:

var highlightLayer = new OpenLayers.Layer.Vector("Highlighted Features", {
    displayInLayerSwitcher: false,
    styleMap: mystyle
});
// the layer is added to the map, GetFeatureInfo controls setup and added etc.
…这是GetFeatureInfo调用的回调:

function showInfo(event) {
    console.log( event );
    highlightLayer.addFeatures( event.features[0] );
    highlightLayer.redraw(); // i've tried without this too
    console.log( highlightLayer );
}
但是没有突出显示。传递给回调的对象(事件)看起来不错,它有一个features属性,包含一个带有一个向量feature元素的数组。但是,在检查回调中打印到控制台的
highlightLayer
vector对象时,我注意到返回的vector feature对象已添加到
UnderderedFeatures
属性中

OpenLayers显然无法呈现该功能,但我不明白原因。似乎没有用于检测渲染问题的回调。我如何进一步调试它

编辑:
另外,我注意到返回向量特征的
bounds
属性是
undefined
。OpenLayers是否需要将其作为有效的
OpenLayers.Bounds
对象?但是,
geometry.bounds
对象已定义,是有效的
OpenLayers.bounds
对象

Edit2
我深入研究了OpenLayers源代码并添加了一些调试日志。事实证明,属于渲染器的“重画特征”函数返回false,导致将特征添加到矢量层的“未渲染特征”属性中。返回false的原因是:

var bounds = feature.geometry.getBounds();
var worldBounds;
if (this.map.baseLayer && this.map.baseLayer.wrapDateLine) {
    worldBounds = this.map.getMaxExtent();
}
var intersects = bounds && bounds.intersectsBounds(this.extent, {worldBounds: worldBounds});
rendered = (style.display !== "none") && !!bounds && intersects;
intersects
变量为false。为什么会这样?是否需要对GetFeatureInfo调用返回的边界值进行某种转换

下面是在
intersectsBounds
函数中比较的点的一些日志:

功能/渲染器画布范围
底部:719322.39/7022915.0167624
左:689914.61/-740991.87193189
右:689947.66/-740514.14050517

上图:719349.21/7023273.3153324

试试这个,如果没有一个最简单的问题实例,就不可能知道——有太多的未知变量,比如你的CRS,甚至连猜都不敢猜。