Here api 这里是javascript-API:Set-center&;用动画缩放

Here api 这里是javascript-API:Set-center&;用动画缩放,here-api,Here Api,我正在使用HERE maps在React JS应用程序上渲染一些标记。单击标记时,地图中心将更改为单击的中心,地图缩放将增加。单击其他标记时,地图位置将更改为其他标记。地图中心的这种变化应该通过一个漂亮的动画/过渡来实现,但相反,地图中心会在没有动画的情况下瞬间变化。我找不到其他方法来做这件事。下面是我的地图实例化的样子: 已在index.js中导入以下内容: <script src="https://js.api.here.com/v3/3.1/mapsjs-core.js" type=

我正在使用HERE maps在React JS应用程序上渲染一些标记。单击标记时,地图中心将更改为单击的中心,地图缩放将增加。单击其他标记时,地图位置将更改为其他标记。地图中心的这种变化应该通过一个漂亮的动画/过渡来实现,但相反,地图中心会在没有动画的情况下瞬间变化。我找不到其他方法来做这件事。下面是我的地图实例化的样子:

已在index.js中导入以下内容:

<script src="https://js.api.here.com/v3/3.1/mapsjs-core.js" type="text/javascript" charset="utf-8"></script>
<script src="https://js.api.here.com/v3/3.1/mapsjs-service.js" type="text/javascript" charset="utf-8"></script>
<script src="https://js.api.here.com/v3/3.1/mapsjs-ui.js" type="text/javascript" charset="utf-8"></script>
<script src="https://js.api.here.com/v3/3.1/mapsjs-mapevents.js" type="text/javascript" charset="utf-8"></script>
<script src="https://js.api.here.com/v3/3.1/mapsjs-clustering.js" type="text/javascript" charset="utf-8"></script>
<script src="https://js.api.here.com/v3/3.1/mapsjs-places " type="text/javascript" charset="utf-8"></script>
单击任何标记后,将调用以下函数,并使用新的地图中心坐标和缩放值作为参数

setMapCenter = ({ center, zoom }) => {
        this.mapReference.setCenter(center,true);
        this.mapReference.setZoom(zoom, true);
    };
但是,这种设置贴图中心和缩放级别的方法不会添加平滑过渡或动画


我使用“hereJSAPI”(版本:1.0.11)npm模块尝试了相同的方法,效果非常好。但是该模块仅将应用程序代码应用程序id作为身份验证,但此处地图上的新帐户仅提供apiKey,现在我只获得了一个apiKey。当我使用apikey和HERE js api模块实例化HERE map时,生成的api请求如下所示:

http://2.base.maps.api.here.com/maptile/2.1/maptile/c98407140a/normal.day/16/34939/19838/256/png8?xnlp=CL_JSMv3.0.17.0&app_id=null&app_code=null

这将返回未经验证的结果,因此现在我将遵循我在这里提到的第一种方法,并按照此处地图文档中的指示进行操作。但不会应用过渡/动画。你知道这两种方法中我做错了什么吗?

我认为问题不在于反应本身,而在于你试图设置中心并立即缩放。这样,第二个动画将取消第一个动画

要正确设置多个特性的动画,应使用以下方法:

关于npm包:


产品没有正式的npm包。

非常感谢,托马斯。工作得很有魅力。
http://2.base.maps.api.here.com/maptile/2.1/maptile/c98407140a/normal.day/16/34939/19838/256/png8?xnlp=CL_JSMv3.0.17.0&app_id=null&app_code=null
setMapCenter = ({ center, zoom }) => {
  this.mapReference.getViewModel().setLookAtData(
    {
      position: center,
      zoom: zoom
    },
    true
  );
};