首页 > 解决方案 > 如果仅使用边界,ViewModel.setLookAtData() 不会动画

问题描述

我正在尝试放大单击的形状或形状组。实际的移动有效,但告诉它动画的属性没有。

map.getViewModel().setLookAtData({
   bounds: boundingBox
}, true);

这确实可以正确移动和缩放,但没有动画。如果我添加一个特定的缩放级别,它会按预期设置动画,但我需要它弄清楚的部分是我的缩放级别。

如果我能找到任何可靠的方法来手动计算缩放级别应该是多少,我可能会伪造它,但这并不理想。无论出于何种原因,仅使用边界会破坏允许动画的功能。有什么解决方法吗?

标签: here-api

解决方案


地图实例方法,如 setZoom()、setCenter() 和 setViewBounds() 接受第二个参数,指示是否应应用动画过渡。

我们建议不要创建自己的缩放动画,如下面的片段所示:

// Assumption: 'map' is initialized and available.
var currentZoom = map.getZoom();
var endZoom = currentZoom + 3;

// Update zoom level on each animation frame,
// till we reach endZoom:
function step() {
    currentZoom += 0.05;
    map.setZoom(currentZoom);

    (currentZoom < endZoom) && requestAnimationFrame(step);
}

// Start zoom animation
step();

相反,使用可选的第二个参数调用方法 setZoom() 来执行动画:

/** * 假设:'map' 已初始化且可用 */ // 使用可选的第二个参数调用 getZoom(), // 表示要执行动画: map.setZoom(map.getZoom() + 3,真的);


推荐阅读