使用OpenLayers 3.20,change: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之前获得先前的行为。
答案 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());
}
}