向v-ol3(Openlayers4)的OLMap中添加新的侦听器

时间:2018-07-13 11:24:06

标签: java gwt listener openlayers vaadin8

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

var a = [1, 2, 3];
var b = ["a", "b", "c"];

var c = a.reduce((accumulator, e, index) => {
  return accumulator.concat({a: e, b: b[index]});
}, [])

console.log(c);

我们每次点击地图

  

新的OLmap.ClickListener()

将起作用并调用在onClick()方法内部编写的方法,但是我希望不单击地图,这意味着在渲染地图时,应该有一些侦听器将在某个事件内调用该方法。根据我了解的API,它们是为地图上的ClickListener实现的,现在我想扩展一个供监听器使用的API,该API将在呈现地图时被调用

  

java中是否有任何此类的侦听器将被称为   应用程序启动后立即开始吗?

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

map.addClickListener(new OLMap.ClickListener() {

@Override
public void onClick(OLClickEvent clickEvent) {

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

但是我想使用v-ol3 jar在Java中实现,但是地图上的click监听器仅实现,而地图呈现的监听器则没有,因此我需要实现哪种监听器? Java中是否有任何类型的侦听器?

  

Importanat:v-ol3取决于gwt-ol3(GWT_Opelayers)。在里面   gwt-ol3 ol.js(包装了openlayers)

1 个答案:

答案 0 :(得分:1)

当该功能不在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
//    }-*/;

因此,这是与Map渲染和在ol3-v gwt包装器上加载有关的唯一事件(顶部还有一个vaadin包装器)。

您可以在Internet上搜索有关加载的Map的信息,没有任何方法可以轻松捕获。

OpenLayers: How to detect the map view is completely loaded?

讲述如何做,它需要监视Map上每层的开始和就绪事件。然后,在完成这些操作之后(您不再计算将要加载的内容),将代码包装在gwt包装器中,最后到vaadin包装器中,您将有一个事件要注册。