Here api 如果仅使用边界,则ViewModel.setLookAtData()不会设置动画

Here api 如果仅使用边界,则ViewModel.setLookAtData()不会设置动画,here-api,Here Api,我正在尝试放大单击的形状或一组形状。实际移动有效,但用于指示其设置动画的属性无效 map.getViewModel().setLookAtData({ bounds: boundingBox }, true); 这确实可以正确地移动和缩放,但没有动画。如果我添加了一个特定的缩放级别,它会按照预期的方式进行动画制作,但我需要它为我确定缩放级别 如果我能想出任何可靠的方法来手动计算缩放级别,我可能会伪造它,但这并不理想。无论出于什么原因,仅使用边界都会破坏允许动画的功能。对此的任何解决方法?

我正在尝试放大单击的形状或一组形状。实际移动有效,但用于指示其设置动画的属性无效

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();
//假设:“映射”已初始化且可用。
var currentZoom=map.getZoom();
var endZoom=currentZoom+3;
//更新每个动画帧上的缩放级别,
//在我们到达终点之前:
函数步骤(){
currentZoom+=0.05;
map.setZoom(当前缩放);
(currentZoom
相反,使用可选的第二个参数调用方法setZoom(),以执行动画:

/***假设:“映射”已初始化且可用*///调用 getZoom()带有可选的第二个参数,//表示 要执行的动画:map.setZoom(map.getZoom()+3,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();
//假设:“映射”已初始化且可用。
var currentZoom=map.getZoom();
var endZoom=currentZoom+3;
//更新每个动画帧上的缩放级别,
//在我们到达终点之前:
函数步骤(){
currentZoom+=0.05;
map.setZoom(当前缩放);
(currentZoom
相反,使用可选的第二个参数调用方法setZoom(),以执行动画:

/***假设:“映射”已初始化且可用*///调用 getZoom()带有可选的第二个参数,//表示 要执行的动画:map.setZoom(map.getZoom()+3,true)


可能的解决方法:如果通过边界质心,则似乎有效:

let data = {bounds: bounds, position: bounds.getCenter() };
map.getViewModel().setLookAtData(data, opt_animate);

可能的解决方法:如果通过边界质心,则似乎有效:

let data = {bounds: bounds, position: bounds.getCenter() };
map.getViewModel().setLookAtData(data, opt_animate);

谢谢你的回复,但这并不能解决这个问题。让我澄清一下。。。我知道我的边界。我正在使用setLookAtData()缩放到该区域。这是可行的,但是animate标志(我在上面的例子中设置为true)不起作用。除非我指定缩放,否则它不会设置动画。这会适得其反,因为我正在使用它为我计算缩放级别。这似乎是函数中的一个bug,在这个特定场景中不起作用。我不能像你描述的那样使用setZoom,因为我缺少endZoom的重要价值。你能分享一下JS API的版本吗?是3.0还是3.1?请你也参考下面的例子:是的。我正在从这个URL加载3.1版。。。(以及服务、ui、mapevents和css)我使用了您引用的示例。它工作得很好,因为我只看到了只使用边界框而不显式提供缩放值时的错误。当以这种方式调用时,它会移动到所需的缩放和位置,但不会设置动画。具有相同的问题。以下代码行不设置动画:
map.getViewModel().setLookAtData({bounds:boundingBox},true)相同的错误。setLookAtData(绑定,动画);动画参数被忽略。谢谢你的回复,但这并不能解决这个问题。让我澄清一下。。。我知道我的边界。我正在使用setLookAtData()缩放到该区域。这是可行的,但是animate标志(我在上面的例子中设置为true)不起作用。除非我指定缩放,否则它不会设置动画。这会适得其反,因为我正在使用它为我计算缩放级别。这似乎是函数中的一个bug,在这个特定场景中不起作用。我不能像你描述的那样使用setZoom,因为我缺少endZoom的重要价值。你能分享一下JS API的版本吗?是3.0还是3.1?请你也参考下面的例子:是的。我正在从这个URL加载3.1版。。。(以及服务、ui、mapevents和css)我使用了您引用的示例。它工作得很好,因为我只看到了只使用边界框而不显式提供缩放值时的错误。当以这种方式调用时,它会移动到所需的缩放和位置,但不会设置动画。具有相同的问题。以下代码行不设置动画:
map.getViewModel().setLookAtData({bounds:boundingBox},true)相同的错误。setLookAtData(绑定,动画);动画参数被忽略。它看起来像API中的问题。团队已经意识到这一点,并将在不久的将来提供修复。@Tomas对此有任何更新。似乎仍与最新版本有冲突…很抱歉,此问题尚未解决。一旦修复程序发布,我会告诉你的。它看起来像是API中的一个问题。团队已经意识到这一点,并将在不久的将来提供修复。@Tomas对此有任何更新。似乎仍与最新版本有冲突…很抱歉,此问题尚未解决。一旦修复程序发布,我会告诉你的。