我使用的是 HERE Android SDK Premium 3.9。我的目标是:
- 首先在屏幕上的某个
PointF
处显示用户的当前位置 - 基于某些条件,我想在屏幕上添加一个“目的地标记”。目的地标记位于与当前位置不同的位置。此标记不得位于中心 - 而是必须偏移某个
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);
我做错了什么?
编辑:
当显示标记时,当前位置指示器不必“在屏幕上”。
最佳答案
- 确保使用有效的
PointF
调用Map.setTransformCenter(PointF)
。 X 和 Y 应在[x 从 0 到 map.getWidth(),y 从 0 到 map.getHeight()]
范围内。 - 方法
Map.setTransformCenter
只是一个 setter ,您需要调用另一个方法,如Map.setCenter()
或Map.zoomTo()
。看看它是如何工作的。
在第二部分的伪代码中,您使用 hereMap.setCenter(marker.getCoordinate(), Map.Animation.NONE);
,确保您实际导航到新的地理坐标,而不是旧的。但实际上,即使您重新导航到旧的地理坐标,它也应该导航到新的 map 中心。
我做了小gist展示如何使用 Map.setTransformCenter(PointF)
。
关于android - 动态改变 transformCenter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54513961/