java - 双击 map fragment 的缩放功能

标签 java android android-maps-v2

我之前为 MapView 做过这件事,这很简单,因为有预定义的方法,如 onInterceptTouchEventGestureListeners 等。

有没有人在 Map Fragment 中也尝试过这种双击或双击缩放功能。我用谷歌搜索但仍然找不到任何解决方案。

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

它会在 setOnMapClickListener() 的帮助下实现,还是有什么东西可以处理 Map Fragment 双击事件的手势?

注意:这个问题纯粹是关于 MapFragment 的,与已经有答案的 MapView 无关 Double tap: zoom on Android 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>

该类是一个 Controller ,它为扩展 Activity 而不是 AppCompactActivity 的 Activity 工作。

我还在 map 中添加了标记聚类。

类方面:

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 中,我只是在对象之间传输一些数据。

最佳答案

您是否尝试过设置您的监听器 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);
}
}

关于java - 双击 map fragment 的缩放功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53775444/

相关文章:

java - 身份验证重定向后如何返回 Jersey MVC Viewable?

java - 以编程方式滚动 ScrollView 以关注按钮或 View - Android

android retrolambda,语句lambda可以替换为表达式lambda

android - 如何提高 Android 地理围栏进入/退出通知的一致性?

Android计算多边形的面积

java - 仅当一个文件不存在时如何在Java中创建一个文件?

java - 返回如何在 try 或 catch 中工作?

JavaCC - 简单表达式

android - Canvas - 在 Android 上放大、移动和缩放

android - 使用 Google Maps Android 标记聚类实用程序时控制缩放级别