首页 > 解决方案 > 动态改变transformCenter

问题描述

我正在使用 HERE Android SDK Premium 3.9。我的目标是这样的:

  1. PointF首先在屏幕上的某个位置显示用户的当前位置
  2. 基于某些条件,我想在屏幕上添加一个“目的地标记”。目标标记位于与当前位置不同的位置。此标记不得位于中心 - 而是必须偏移某个PointF

我无法做到这一点。我可以setTransformCenter对初始的“当前位置”使用一次并生效。但是,如果我再次调用它,它似乎没有生效。我在第 2 步中添加的标记永远不会位于正确的位置。

这是一些伪代码:

hereMap.setTransformCenter(positionIndicatorPoint);

GeoCoordinate markerCoordinate = getMarkerCoordinates();
MapMarker marker = new MapMarker();
marker.setCoordinate(markerCoordinate);


hereMap.setTransformCenter(mapMarkerPoint);
hereMap.addMapObject(marker);
hereMap.setCenter(marker.getCoordinate(), Map.Animation.NONE);

我究竟做错了什么?

编辑:

显示标记时,当前位置指示器不必“在屏幕上”显示。

标签: androidhere-api

解决方案


  1. 确保您Map.setTransformCenter(PointF)使用 valid调用PointF。X 和 Y 应在[x from 0 to map.getWidth(), y from 0 to map.getHeight()]范围内。
  2. Method只是一个 setter,你需要像orMap.setTransformCenter一样调用另一个方法。看看它是如何工作的。Map.setCenter()Map.zoomTo()

在您使用的第二部分的伪代码中hereMap.setCenter(marker.getCoordinate(), Map.Animation.NONE);,确保您实际导航到新的地理坐标,而不是旧的地理坐标。但实际上,即使您重新导航到旧的地理坐标,它也应该导航到新的地图中心。

我做了一个小要点来展示如何Map.setTransformCenter(PointF)使用。


推荐阅读