java - 为 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 被包裹)
解决方案
当功能不在 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 包装器)。
你可以在网上搜索加载地图,没有办法这么容易抓到。
告诉如何去做,它需要在地图上观察每层的开始和准备事件。然后在完成这些之后(您计算将不再加载任何内容),您将代码包装在 gwt 包装器中,最后包装到 vaadin 包装器,并且您有一个要注册的事件。
推荐阅读
- ionic-framework - 智能手表与 Ionic Mobile 应用程序集成
- google-sheets - 从两个不同的站点地图中提取 URL 并在另一个工作表中匹配没有根域的 URL
- debugging - Python解释器解释注释代码
- php - Symfony 学说不会滋润整个链条
- python - 循环通过 tkinter 按钮无法正常工作
- rx-java - RxJava kafka 消费者
- html - HTML单选按钮选择两个选项而不是一个
- sql - 2018 年 11 月 23 日星期五格式的 Oracle 日期转换
- clickhouse - 在 Clickhouse 中,如何获取所有列均非空/非空的行?
- javascript - Vue / Vue路由器范围内的CSS未在导航中清除