我最近开始使用 GeoExt 和 OpenLayers 来生成 web gis 应用程序。在开发此应用程序期间,我发现使用对象“OpenLayers.Control.SelectFeature”存在问题。
我有各种对象'OpenLayers.Layer.Vector',在地图上显示几何点。每个点都必须显示一个带有其要素属性的弹出窗口。要生成此弹出窗口,我使用了此功能:
function createPopup(feature) {
var popupOpt = Ext.apply({
title: feature.attributes.title,
location: feature,
html: feature.attributes.html,
collapsible: false,
unpinnable: false,
maximizable: true,
icon: feature.attributes.icon,
border: false,
style: {
borderColor: 'white',
borderStyle: 'solid'
}
});
popup = Ext.create('GeoExt.window.Popup', popupOpt);
popup.on({
close: function() {
selectCtrl.unselectAll();
}
});
popup.show();
}
现在,当我使用一组矢量对象创建一个控制对象“OpenLayers.Control.SelectFeature”时,这不起作用,而如果我创建一个只有一个矢量对象的控制对象,则它可以正常工作。
这可以正常工作:
var vectorStyle = new OpenLayers.StyleMap({'pointRadius': 4, 'externalGraphic': 'resources/images/logo.png', 'graphicWidth': 30, 'graphicHeight': 25, 'fillOpacity': 1.0, 'cursor': 'pointer'});
var vector = new OpenLayers.Layer.Vector("StationA",{styleMap: vectorStyle, visibility: false});
var selectCtrl = new OpenLayers.Control.SelectFeature(vector,{onSelect:createPopup});
mapPanel.map.addControls(selectCtrl);
selectCtrl.activate();
如果我使用数组:...SelectFeature([vector1,vector2,vector3],...不起作用:
var vectorStyle = ....
var vector1 = ...
var vector2 = ...
var vector3 = ...
var selectCtrl = new OpenLayers.Control.SelectFeature([vector1,vector2,vector3],{onSelect:createPopup});
mapPanel.map.addControls(selectCtrl);
selectCtrl.activate();
有人可以帮助我吗?