0

我在使用矢量图层事件时遇到了一个奇怪的问题。这是我的代码的片段:

var options = {
                    projection : "EPSG:3857",
                    displayProjection : "EPSG:4326",
                    numZoomLevels : 18,
             //after delete this part below of option everything works good
                     eventListeners: {
                         featureover: function(e) {
                         document.getElementById("output").innerHTML="ok';
               }}};
map = new OpenLayers.Map('map', options);

w_parcels = new OpenLayers.Layer.Vector("PARCELS", {
                                            styleMap : style_parcels,
                                            projection : "EPSG:3857",
                                            strategies : [ new OpenLayers.Strategy.Fixed() ],
                                            protocol : new OpenLayers.Protocol.HTTP({
                                            url : "parcels.php",
                                            format : new OpenLayers.Format.GeoJSON()})
                                            });


    map.addLayers([osm,w_parcels]);

    selectControl = new OpenLayers.Control.SelectFeature(w_parcels, {
                        clickout: false,
                        multiple: true,
                        onSelect : onFeatureSelect,
                        onUnselect : onFeatureUnselect,
                        toggleKey: "ctrlKey" // ctrl key removes from selection
                    });

    selectControl.handlers.feature.stopDown = false;
    map.addControl(selectControl);
    selectControl.activate();
    map.addControl(new OpenLayers.Control.ScaleLine());

    function onFeatureSelect(feature) {
            console.log('it works');
        }

在此代码事件中,当我单击图层上的功能时(有时我必须双击),onselect并不总是有效。

如果我从选项中删除eventListeners,则onselect效果很好,我的意思是总是在我单击图层上的功能时。

我的代码有什么问题?是否有可能解决eventListenersonselect之间的冲突?

4

1 回答 1

1

似乎,事件featureover掩盖了选择控件,因为该函数将在您执行时首先执行select,因为您必须将鼠标悬停在矢量图层上才能单击它。但如果功能仅限于selectmouse-over矢量图层。然后你可以使用类似的东西 -

 eventListeners: {
    featureover: function(e) {
      //behavior for hover events
    },
    featureout: function(e) {
      //behavior for mouse out events
    },                    
    featureclick: function(e) {
      //behavior for click events
    }
  }

希望这可以帮助。

于 2015-02-18T08:29:36.627 回答