事件
地图和地图要素具有下列事件。
地图事件
MapClickEvent
用户点击地图触发的事件。注意,如果用户双击地图,该事件会触发两次。
下面是处理地图点击事件的示例。用户点击时,显示一条消息,包含事件的名称和地图中点击的坐标:
protected GeometryFactory geometryFactory = GeometryUtils.getGeometryFactory();
@Autowired
private Notifications notifications;
@Subscribe("geoMap")
public void onGeoMapMapClick(final MapClickEvent event) {
Point point = geometryFactory.createPoint(event.getCoordinate());
notifications.create("ClickEvent", point.getCoordinate().toString())
.withPosition(Notification.Position.BOTTOM_END)
.show();
}
MapDoubleClickEvent
用户双击地图时发送的事件。
下面是处理地图双击事件的示例。
@ViewComponent
private GeoMap geoMap;
@Subscribe("geoMap")
public void onGeoMapMapDoubleClick(final MapDoubleClickEvent event) {
GeoMapView view = new GeoMapView();
view.setCenter(event.getCoordinate());
view.setZoom(6);
geoMap.setMapView(view);
}
MapMoveEndEvent
地图移动时发送的事件,包括缩放、平移或者拖动等。
下面是处理地图移动事件的示例。
@Autowired
private Notifications notifications;
@Subscribe("geoMap")
public void onGeoMapMapMoveEnd(final MapMoveEndEvent event) {
notifications.create("MapMoveEndEvent",
String.format("""
Values:
Center: %s
Zoom: %s
Rotation: %s
""",
event.getCenter(),
event.getZoom(),
event.getRotation()))
.withPosition(Notification.Position.BOTTOM_END)
.show();
}
MapZoomChangedEvent
地图缩放发生变化时发送的事件。
下面是处理地图缩放事件的示例。
@Autowired
private Notifications notifications;
@Subscribe("geoMap")
public void onGeoMapMapZoomChanged(final MapZoomChangedEvent event) {
notifications.create("MapZoomChangedEvent", "Zoom: " + event.getZoom())
.withPosition(Notification.Position.BOTTOM_END)
.show();
}
源事件
SourceFeatureClickEvent
用户点击 地图要素 时触发的事件。注意,如果用户双击,该事件会触发两次。
@ViewComponent("geoMap.vector.vectorSource")
private VectorSource vectorSource;
@Subscribe
public void onInit(final InitEvent event) {
vectorSource.addSourceFeatureClickListener(clickEvent -> {
Feature feature = clickEvent.getFeature();
notifications.create("SourceFeatureClickEvent",
feature.getGeometry().get().getClass().getSimpleName())
.withPosition(Notification.Position.BOTTOM_END)
.show();
});
}
GeoObjectClickEvent
用户点击地理对象时发送的事件。注意,如果用户双击,该事件会触发两次。
@Autowired
private Notifications notifications;
@ViewComponent("map.vectorLayer.dataVectorSource")
private DataVectorSource<Location> dataVectorSource;
@Subscribe
public void onInit(final InitEvent event) {
dataVectorSource.addGeoObjectClickListener(clickEvent ->
notifications.create("GeoObject click", clickEvent.getItem().getCity())
.withPosition(Notification.Position.BOTTOM_END)
.show());
}
本页是否有帮助?
感谢您的反馈