首页 > 解决方案 > 为 v-ol3 (Openlayers4) 的 OLMap 添加一个新的监听器

问题描述

v-ol3(vaadin-Openlayers4) 的 OLMap 类中有一个方法:

map.addClickListener(new OLMap.ClickListener() {

@Override
public void onClick(OLClickEvent clickEvent) {

//calling  some method to execute when we click on the map  
 } 
});

当我们点击地图时

新的 OLmap.ClickListener()

将采取行动并调用 onClick() 方法中编写的方法,但我希望不点击地图,这意味着当地图呈现时,应该有一些侦听器将在某个事件中调用该方法。根据我所理解的 API,它们是为地图上的 ClickListener 实现的,现在我想扩展一个侦听器的 API,该 API 在地图渲染时将被调用

java中是否有任何此类侦听器会在应用程序启动后立即被调用?

实际上我想获得点的像素值,我可以在 javascript 中获得,如下所示,

map.once('postrender', function() {
 var geometry = polyFeature.getGeometry();
var coordinate = geometry.getCoordinates();
var pixel1 = map.getPixelFromCoordinate(coordinate);
});
map.setView(view)

但我想使用 v-ol3 jar 在 java 中实现,但是只有地图上的点击侦听器的实现,而不是地图渲染的侦听器,所以我需要为此实现什么样的侦听器或者有任何类型的侦听器java中的监听器?

Importanat:v-ol3 取决于 gwt-ol3(GWT_Opelayers) 。在 gwt-ol3 中,ol.js(openlayers 被包裹)

标签: javagwtlisteneropenlayersvaadin8

解决方案


当功能不在 API 中时,原因可能是还没有代码。现在的情况也是如此。

看:

https://github.com/VOL3/v-ol3/blob/master/gwt-ol3/src/main/java/org/vaadin/gwtol3/client/Map.java

有一个片段:

//    public native final void beforeRender()/*-{
//        //TODO: find a nice way to do this in GWT
//    }-*/;

所以这是唯一与地图渲染和加载 ol3-v gwt 包装器相关的事件(上面还有一个 vaadin 包装器)。

你可以在网上搜索加载地图,没有办法这么容易抓到。

OpenLayers:如何检测地图视图是否完全加载?

告诉如何去做,它需要在地图上观察每层的开始和准备事件。然后在完成这些之后(您计算将不再加载任何内容),您将代码包装在 gwt 包装器中,最后包装到 vaadin 包装器,并且您有一个要注册的事件。


推荐阅读