OpenLayers SelectedFeature与矢量数组

时间:2014-06-16 12:58:01

标签: openlayers extjs4.2 geoext

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

有人可以帮助我吗?

0 个答案:

没有答案