我是,目前在MapActivity中获取设备的当前位置(lat,lng)。现在我想让用户移动地图,同时将标记保持在中心位置。这意味着无论何时移动地图,都将更新当前位置。 (右?)
我遵循了android How to move a map under a marker和How to attach a flexible marker on map something like Uber and Lyft?,但无法明确我的概念。
Activity_map.xml(这里我添加了ImageView)
uid
我的MapActivity如下
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<fragment
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.MapFragment"
/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:src="@drawable/gps"
/>
</RelativeLayout>
非常感谢您的帮助。谢谢。
答案 0 :(得分:26)
使用带有标记图标的ImageView下的地图将是最好的方式(仅在地图片段下方的框架布局,并且您的标记图像位于顶部应该有效)。然后你可以使用OnCameraIdleListener
,它会在地图移动结束时收到回调。因此,只需在地图中设置OnCameraIdleListener
的实例即可监听移动回调,如下所示:
map.setOnCameraIdleListener(new GoogleMap.OnCameraIdleListener() {
@Override
public void onCameraIdle() {
//get latlng at the center by calling
LatLng midLatLng = map.getCameraPosition().target;
}
});
答案 1 :(得分:6)
首先尝试使用Activity_map.xml的这个布局:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.MapFragment"
/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:src="@drawable/gps"
/>
</RelativeLayout>