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,甚至连猜都不敢猜。