android v2 mapview中的中心固定标记

时间:2014-11-19 11:05:15

标签: android android-layout android-fragments android-activity

我想在拖动地图的同时在mapview的中心点设置固定标记。它已在android Map V1 google mapview完成。但现在它已被弃用了。现在我的问题是,它是否可能在android Map V2谷歌mapview?(我已经尝试过但地图没有显示)

3 个答案:

答案 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()已被弃用,因此您可以使用新的相机监听器(OnCameraIdleListenerOnCameraMoveListenerOnCameraMoveStartedListenerOnCameraMoveCanceledListener),例如:

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