修复标记位置而不是地图旋转/方位(方向)像口袋妖怪去

时间:2016-07-19 14:58:06

标签: android google-maps google-maps-android-api-2

我正在使用Android应用使用地图来跟踪用户位置。我想在屏幕上修复当前的位置标记。在我当前的工作演示中,当我旋转地图当前位置标记隐藏在屏幕下或移动到另一个位置时。我该怎么做到这一点?提前致谢。

2 个答案:

答案 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的逻辑,使投影到地图上的坐标并实现,您需要旋转地图。