双击以缩放地图片段的功能

时间:2018-12-14 07:48:41

标签: android android-maps-v2

我之前是针对MapView进行此操作的,这非常简单,因为其中包含预定义的方法,例如onInterceptTouchEventGestureListeners等。

也有人尝试过在“地图片段”中双击或双击缩放功能。我用谷歌搜索,但仍然找不到任何解决方案。

我只是通过仅添加UiSettings getMap().getUiSettings().setZoomGesturesEnabled(true);

来启动它

将在setOnMapClickListener()的帮助下实现该功能吗?或者有什么东西可以处理Map Fragment双击事件的手势?

注意:此问题完全在MapFragment上,与已经回答Double tap: zoom on Android MapView?

的MapView无关

编辑 我在布局中使用的MapFragment:

<ViewFlipper
        android:id="@+id/viewFlipper"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_below="@id/noItemsText"
        android:layout_centerInParent="true"
        android:layout_gravity="center"
        android:addStatesFromChildren="true"
        android:background="@android:color/transparent"
        android:gravity="center">

        <ListView
            android:id="@+id/storesListView"
            style="@style/Fill"
            android:background="@android:color/transparent"
            android:cacheColorHint="#00000000" />

        <fragment
            android:id="@+id/mapview"
            android:name="com.google.android.gms.maps.MapFragment"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

    </ViewFlipper>

该类是为Activity工作的控制器,它扩展了Activity而不是AppCompactActivity。

我还在地图上添加了标记聚类。

课堂方面:

public class StoreFinderController extends BeeonicsControllerBase implements OnMapReadyCallback,
    ClusterManager.OnClusterItemInfoWindowClickListener<AllClusterItems>,ClusterManager.OnClusterClickListener<AllClusterItems> {

onMapReady:

@Override
public void onMapReady(GoogleMap googleMap) {

    /*better to work with our map :)*/
    this.googleMap = googleMap;

    mClusterManager = new CustomClusterManager<AllClusterItems>(getActivity(), getMap());
    getMap().setOnCameraIdleListener(mClusterManager);
    getMap().setOnInfoWindowClickListener(mClusterManager);
    getMap().setOnMarkerClickListener(mClusterManager);
    mClusterManager.setOnClusterItemInfoWindowClickListener(this);
    mClusterManager.setOnClusterClickListener(this);

    /*map additional settings*/
    setUpMap();

    //setUpGoogleMap();
    //readItems();
}

在setUpMap内部,我只是在对象之间传输一些数据。

2 个答案:

答案 0 :(得分:2)

您是否尝试过将监听器设置为onMapReady()回叫?然后设置

mMap.getUiSettings()。setZoomGesturesEnabled(true);

@Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;
 mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
            @Override
            public void onMapClick(LatLng latLng) {
                try {


                //   mMap.clear();
                    mMap.getUiSettings().setZoomGesturesEnabled(true);
}
}

答案 1 :(得分:2)

我尝试了herehere的所有可能解决方案,其中他们给出了其他一些通过触摸事件来处理双击的方法。但不幸的是,没有任何事情对我有用。

因此,我以预定义的onMapClickListener()结尾,该操作只需单击地图即可。我在下面粘贴了我的解决方案:

 getMap().setOnMapClickListener(new GoogleMap.OnMapClickListener() {
        @Override
        public void onMapClick(LatLng latLng) {
            getMap().animateCamera(CameraUpdateFactory.zoomIn());
        }
    });

无论如何都要感谢Karan Mer的帮助。