我正在使用Android应用使用地图来跟踪用户位置。我想在屏幕上修复当前的位置标记。在我当前的工作演示中,当我旋转地图当前位置标记隐藏在屏幕下或移动到另一个位置时。我该怎么做到这一点?提前致谢。
答案 0 :(得分:0)
如果您希望标记始终返回到屏幕中心,您可以使用:
CameraPosition cameraPosition = new CameraPosition.Builder()
.target(latLng).zoom(zoom).build();
googleMap.animateCamera(CameraUpdateFactory
.newCameraPosition(cameraPosition));
这里,latLng保存标记的纬度和经度,每次更改标记的位置,或者如果您希望标记返回中心,您可以使用上面的代码。
此外,您可以使用以下代码阻止地图可拖动:
googleMap.getUiSettings().setScrollGesturesEnabled(false);
这将禁用地图移动,但旋转,平移和缩放工作正常。
答案 1 :(得分:0)
如果我理解正确,那么你将不得不做一些黑客攻击。对不起,您没有提供我的代码,所以我不太可能提示您确切的解决方案。但我可以解释一下这个想法
您在FrameLayout中放置两个视图的想法:MapView和View(抱歉伪代码)。
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<MapView
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<View
android:id="@+id/touch_zone"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"/>
</FrameLayout>
因此,您可以阻止在地图上触摸。然后,您需要在您的位置上制作地图轨道
例如,您可以在定位更改时捕获事件并调用googleMap.animateCamera(...)
。
然后,对于touch_zone视图,您需要使用您的匿名类调用setOnTouchListener
,这将触及我们的上层视图。在这种方法中,您将实现在屏幕上获取coordintates的逻辑,使投影到地图上的坐标并实现,您需要旋转地图。