我想在拖动地图的同时在mapview
的中心点设置固定标记。它已在android Map V1 google mapview
完成。但现在它已被弃用了。现在我的问题是,它是否可能在android Map V2谷歌mapview
?(我已经尝试过但地图没有显示)
答案 0 :(得分:13)
所以你想要地图中心的十字架,对吗?
我没有使用过MapView。但是我使用了地图片段,我在地图上实现修复标记的方式是使用ImageView,所以你最终会得到如下内容:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<fragment
android:id="@+id/fragment1"
android:name="com.google.android.gms.maps.MapFragment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" />
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:src="@drawable/cross_hairs" />
</RelativeLayout>
您可以将MapFragment与MapView交换。
将标记放在地图上效率很低,因为当用户平铺地图时,您需要不断更新标记。
希望它有所帮助!
答案 1 :(得分:7)
我打赌您使用getMapCenter()
,根据谷歌地图for Android v2,不再可以使用。但不用担心,只需使用它:
GoogleMap.getCameraPosition().target
它将返回一个LatLng
对象,它基本上代表地图的中心。然后,您可以通过为OnCameraChangedListener
分配GoogleMap
,在每次发生拖动事件时将标记重新定位到中心。
yourGMapInstance.setOnCameraChangeListener(new OnCameraChangedListener() {
@Override
public void onCameraChange (CameraPosition position) {
// Get the center of the Map.
LatLng centerOfMap = yourGMapInstance.getCameraPosition().target;
// Update your Marker's position to the center of the Map.
yourMarkerInstance.setPosition(centerOfMap);
}
});
有。我希望这有帮助!
答案 2 :(得分:0)
请注意,setOnCameraChangeListener()
已被弃用,因此您可以使用新的相机监听器(OnCameraIdleListener
,OnCameraMoveListener
,OnCameraMoveStartedListener
,OnCameraMoveCanceledListener
),例如:
map.setOnCameraMoveListener(new GoogleMap.OnCameraMoveListener() {
@Override
public void onCameraMove() {
// Get the center of the map
LatLng center = map.getCameraPosition().target;
......
}
});
有关详细信息,请阅读:https://developers.google.com/maps/documentation/android-api/events