0

我最近开始使用 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();

有人可以帮助我吗?

4

0 回答 0