Google 地图 Android 片段内的 v2 缩放级别检测

Google Map Android v2 Zoom Level Detection Inside a Fragment

我正在尝试检测 Google 地图中的缩放级别。我的地图位于一个 Fragment 中,它扩展了另一个 Fragment.

我已经在 class 中实现了 OnCameraChangeListener。

这是我为检测缩放级别变化而编写的代码:

private float currentZoom = -1;

public GoogleMap.OnCameraChangeListener getCameraChangeListener()
{
    return new GoogleMap.OnCameraChangeListener()
    {
        @Override
        public void onCameraChange(CameraPosition position)
        {
            if(currentZoom != position.zoom)
            {
                currentZoom = position.zoom;


                Context context = mContext;
                CharSequence text = Float.toString(currentZoom);
                int duration = Toast.LENGTH_SHORT;

                Toast toast = Toast.makeText(context, text, duration);
                toast.show();
            }

        }
    };
}

// This is the Method that was created after Implementing the OnCameraChangeListener
@Override
public void onCameraChange(CameraPosition cameraPosition) {
    getCameraChangeListener();
}

当我在Phone中打开应用程序并尝试放大缩小时,没有任何反应。通常在阅读了有关缩放级别检测的其他问题的答案后,这就是我想出的代码。但是没用。

请告诉我如何让它工作。非常感谢。

将在 GoogleMap 对象的实例上设置 onCameraChangeListener。更多详情请见 http://developer.android.com/reference/com/google/android/gms/maps/GoogleMap.html

您需要将 GoogleMap.OnCameraChangeListener 分配给您的 GoogleMap 实例。下面是一个示例代码,可能会帮助您找到执行此操作的方法:

public void prepareMap(){
    mMapFragment.getMapAsync(new OnMapReadyCallback() {
      @Override
      public void onMapReady(GoogleMap googleMap) {
        setupMap(googleMap);
      }
    });
}

private void setupMap(GoogleMap googleMap){
  mMap = googleMap;
  mMap.setOnCameraChangeListener(getCameraChangeListener());
}

public GoogleMap.OnCameraChangeListener getCameraChangeListener() {
  return new GoogleMap.OnCameraChangeListener() {
    @Override
    public void onCameraChange(CameraPosition position) {
        if(currentZoom != position.zoom) {
            currentZoom = position.zoom;

            Context context = mContext;
            CharSequence text = Float.toString(currentZoom);
            int duration = Toast.LENGTH_SHORT;

            Toast toast = Toast.makeText(context, text, duration);
            toast.show();
          }
      }
  };
}