here-api - 如果仅使用边界,ViewModel.setLookAtData() 不会动画
问题描述
我正在尝试放大单击的形状或形状组。实际的移动有效,但告诉它动画的属性没有。
map.getViewModel().setLookAtData({
bounds: boundingBox
}, true);
这确实可以正确移动和缩放,但没有动画。如果我添加一个特定的缩放级别,它会按预期设置动画,但我需要它弄清楚的部分是我的缩放级别。
如果我能找到任何可靠的方法来手动计算缩放级别应该是多少,我可能会伪造它,但这并不理想。无论出于何种原因,仅使用边界会破坏允许动画的功能。有什么解决方法吗?
解决方案
地图实例方法,如 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,真的);
推荐阅读
- c# - 如何让角色转向相机的方向?[Unity3D]
- python - 当我通过 python 中的文件对话框打开图像时,为什么会收到“UnicodeDecodeError”?
- javascript - 在 JavaScript 中创建迭代器时,数组未传递给 next() 方法
- android - 错误警告:应避免使用 flatDirs,因为它不支持任何元数据格式
- typescript - 如何在界面中定义一个“typeof this”的类型
- python - 在 python NameError 中定义异常错误
- python - 在单元测试 Python 中模拟
- swift - [标签比较:]:无法识别的选择器发送到实例
- swift - 如何在进入屏幕时自动刷新视图控制器中的表格视图?
- python - Airflow 会从函数参数中的 ds 或 **kwargs 读取