如何获得结束'在OL3中动画后的分辨率?

时间:2016-12-21 13:26:04

标签: javascript openlayers-3

使用OpenLayers 3.20change:resolution事件会在ol.View上播放动画时多次触发change:center事件。在该版本之前,它曾经只被触发过一次。 MediaMetadataCompat metadata; // initial metadata public void setLiked(boolean liked) { buildMetaFor(RatingCompat.newThumbRating(liked)); } public void setUnrated() { buildMetaFor(RatingCompat.newUnratedRating(RatingCompat.RATING_NONE)); } public RatingCompat getRating() { return metadata.getRating(MediaMetadataCompat.METADATA_KEY_USER_RATING); } public MediaMetadataCompat buildMetaFor(RatingCompat rating) { metadata = new MediaMetadataCompat .Builder(metadata) .putRating(MediaMetadataCompat.METADATA_KEY_USER_RATING, rating) .build(); return metadata; } 也是如此。

我的问题是:有没有办法知道动画何时开始(这将是我想绑定某种事件监听器的钩子)并从那里得到动画结束时的分辨率?基本上,我想知道是否有可能在3.20之前获得先前的行为。

1 个答案:

答案 0 :(得分:0)

是的,如果您正在使用ol.View#animate,有一种方法 - 在动画结束时使用回调:

map.getView().animate({
  center: ol.proj.fromLonLat([37.6178, 55.7517]),
  zoom: 5
}, animateCallback);

function animateCallback (complete) {
  if (complete) {
    console.log(map.getView().getResolution());
    console.log(map.getView().getZoom());
  }
}

https://jsfiddle.net/jonataswalker/jr0d7dLb/