0

我们正在开发我们的 Gis 应用程序,我正在使用 gwt-openlayers,我们正在创建 Vaadin 包装器。

所以我扩展了 MapWidget 并创建了所需的图层和矢量图层并添加了 DrawFeatureControl:

    DrawFeatureOptions drawFeatureOptions = new DrawFeatureOptions();
        private DrawFeature drawFeaturePoint = = new DrawFeature(vectorLayer, new PointHandler(), drawFeatureOptions);

并赶上事件:

    getWidget().getDrawFeatureOptions().onFeatureAdded(new () {
        @Override
        public void (com.openlayers.client.feature.VectorFeature vectorFeature) {
            Window.alert("Feature Added" + vectorFeature.getFID()); 
            serverRpc.featureAdded(buildVectorFeature(vectorFeature)); 
        }
    });

由于某种原因,这不起作用;尽管以下应该几乎相同的工作正常:

    getWidget().getVectorLayer().addVectorFeatureSelectedListener(new () {
        @Override
        public void onFeatureSelected(FeatureSelectedEvent eventObject) { 
serverRpc.featureSelected(buildVectorFeature(eventObject.getVectorFeature())); 
        }
    }); 

在矢量图层上使用 (addVectorFeatureAddedListener) 将在每次将要素添加到 VectorLayer 时触发,并且在使用 DrawFeatureControl 时不会触发。有人可以帮我捕捉使用 DrawFeatureControl 绘制的特征吗?

顺便说一句,我在 MapWidget 上有一个集群和 BBox 策略,我不知道这是否会改变任何东西。

4

2 回答 2

0

您是否知道 Vaadin 有自己的 OpenLayers 包装器以在 Vaadin 中使用 OpenLayers?

https://vaadin.com/directory#addon/openlayers-wrapper

于 2014-01-04T20:34:09.107 回答
0

我找到了,不知为何

getDrawFeatureOptions().onFeatureAdded 

不成功,我不得不使用以下方法在 GWT 中注入侦听器:

getWidget().getDrawFeaturePoint().eventListeners.addListener(getWidget().getDrawFeaturePoint(), featurePointAddedlistener, EventType.VECTOR_FEATURE_ADDED, new EventHandler() {
    @Override
    public void onHandle(EventObject eventObject) {
        FeatureAddedEvent e = new FeatureAddedEvent(eventObject);
        featurePointAddedlistener.onFeatureAdded(e);
    }
}); 
于 2014-01-07T07:01:09.483 回答