识别地图moveend事件是否是用户启动的

时间:2016-02-02 20:38:49

标签: openlayers-3

我在ol.Map上注册了'moveend'事件监听器。当用户输入移动地图时,它也会触发,当我拨打ol.View.setCenterol.View.setResolution时也是如此。

是否可以检查'moveend'ol.MapEvent以确定事件是由用户输入触发还是手动更改地图视图的属性?

1 个答案:

答案 0 :(得分:0)

我最终做了以下事情。

map.on('moveend', function(event) {
  var mapView = map.getView(),
      moveInitiatedProgrammatically = mapView.get('moveInitiatedProgrammatically') || false;

  mapView.unset('moveInitiatedProgrammatically');

  // evaluate moveInitiatedProgrammatically's value and behave accordingly...
});

map.getView().set('moveInitiatedProgrammatically', true);
map.getView().setCenter(coord);

由于以下原因,它并不理想:

  1. 在地图视图中引入其他状态信息。
  2. 不小心更换地图视图会丢失该状态信息。
  3. 需要在更改视图状态之前设置属性,并且可能太容易被遗忘。
  4. 然而,它在此期间解决了我的问题。