【问题标题】:Google Maps two finger pinch/stretch callbacks谷歌地图两个手指捏/拉伸回调
【发布时间】:2016-10-19 00:15:42
【问题描述】:

在我的地图中,我尝试使用 ScaleGestureDetector 捕捉放大/缩小,但我从未收到任何对 onScaleonScaleBeginonScaleEnd 的任何回调。

在我的 Fragment 的onCreateView 中,我初始化:

scaleGestureDetector = new ScaleGestureDetector(getContext(), new simpleOnScaleGestureListener());

我像这样实现回调:

public class simpleOnScaleGestureListener extends
        SimpleOnScaleGestureListener {

    @Override
    public boolean onScale(ScaleGestureDetector detector) {
        // TODO Auto-generated method stub
        startScale = detector.getScaleFactor();
        Log.d(TAG, "::onScale:: " + detector.getScaleFactor());
        return true;
    }

    @Override
    public boolean onScaleBegin(ScaleGestureDetector detector) {
        // TODO Auto-generated method stub
        Log.d(TAG, "::onScaleBegin:: " + detector.getScaleFactor());
        return true;
    }

    @Override
    public void onScaleEnd(ScaleGestureDetector detector) {
        // TODO Auto-generated method stub
        Log.d(TAG, "::onScaleEnd:: " + detector.getScaleFactor());
        endScale = detector.getScaleFactor();

}

此外,假设每当用户放大/缩小时都会连续调用回调是否公平?

【问题讨论】:

    标签: android-maps-v2 supportmapfragment android-gesture


    【解决方案1】:

    我能够解决获取回调的问题。本质上,有两件事:

    1. 在您的活动/片段中,实施,GoogleMap.OnCameraIdleListener
    2. onMapReady(), call mMap.setOnCameraIdleListener(this);
    3. 因此,覆盖onCameraIdle()

    @Override public void onCameraIdle() { Log.i(TAG, "::onCameraIdle::" + mMap.getCameraPosition().toString()); }

    获取纬度/经度、缩放、倾斜和方位,基本上是CameraPosition

    我找到了一种以米为单位的方法,通过参考这个response

    VisibleRegion vr = map.getProjection().getVisibleRegion();
    
    Location center = new Location("center");
    center.setLatitude(vr.latLngBounds.getCenter().latitude);
    center.setLongitude(vr.latLngBounds.getCenter().longitude);
    
    //Location("radiusLatLng") as mentioned in google maps sample
    Location farVisiblePoint = new Location("radiusLatLng");
    farVisiblePoint.setLatitude(vr.farLeft.latitude);
    farVisiblePoint.setLongitude(vr.farLeft.longitude);
    
    radius = center.distanceTo(farVisiblePoint);
    

    【讨论】:

      猜你喜欢
      • 2012-06-04
      • 2021-12-03
      • 1970-01-01
      • 1970-01-01
      • 2016-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-10
      相关资源
      最近更新 更多