如何订阅 JavaScript 中的 OpenLayers 5.3.0 事件?

How do I subscribe to OpenLayers 5.3.0 events in JavaScript?

我看到 OpenLayers 5.3.0 正在使用 observables。文档还 cover events.

我如何将这个起始示例更改为 .subscribe() 以一般事件?我正在努力弥合文档和使用之间的差距。

import Map from 'ol/Map';
import View from 'ol/View';
import TileLayer from 'ol/layer/Tile';
import XYZ from 'ol/source/XYZ';

new Map({
  target: 'map',
  layers: [
    new TileLayer({
      source: new XYZ({
        url: 'https://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png'
      })
    })
  ],
  view: new View({
    center: [0, 0],
    zoom: 2
  })
});

seen examples 使用旧版本的 OpenLayers 可能不适用于此处。至少在上面的链接示例中,"eventListeners" 未在 5.3.0 上列为 属性,并且看起来很旧并且与回调相关(不可观察)。

我确实看到了一个更近期的类似问题 here with helpful resources listed。我可以使用脚本示例来帮助入门。

您可以注册事件,例如在地图上。在latest examples there is an example for the moveend event.

var map = new Map({
    layers: [
        new TileLayer({
            source: new OSM()
        })
    ],
    target: 'map',
    view: new View({
        center: [0, 0],
        zoom: 2
    })
});

map.on('moveend', function(evt){console.log(evt);});