检测地图v2按用户而非设备缩放(自动)

时间:2013-10-12 07:03:02

标签: android google-maps google-maps-android-api-2

我正在使用下面的代码来检测用户的缩放,但即使我没有碰到任何东西也会在循环中检测。如何检测设备上的人体触摸并检查他是否放大?我非常感谢任何帮助。谢谢你。

 googleMap.setOnCameraChangeListener(new OnCameraChangeListener() {

                @Override
                public void onCameraChange(CameraPosition position) {
                    // TODO Auto-generated method stub

                    if (position.zoom < 12 ) {
                        googleMap.animateCamera(CameraUpdateFactory.zoomTo(13));
                        }

                 googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));

                    }
                }

              });

    }

1 个答案:

答案 0 :(得分:2)

无限循环显而易见。 要么你有一个20的缩放级别,那么你总是会在第二个条件下结束。 或者你有一个小于20的缩放级别,那么你总是会在第三个条件下结束。

我会尝试这样的事情:

boolean changeTriggeredByProgram = false;
googleMap.setOnCameraChangeListener(new OnCameraChangeListener() {

    @Override
    public void onCameraChange(CameraPosition position) {
        if (changeTriggerByProgram) {
            changeTriggeredByProgram = false;
            return;
        }
        /* Check, whether you want to adapt the position by program, 
         * and if so, do the following: */
        changeTriggeredByProgram = true;
        googleMap.animateCamera(newPosition, new CancelableCallback() {
            @Override
            public void onFinish() {
            }
            @Override
            public void onCancel() {
                changeTriggeredByProgram = false;
            }
        };
    }
}

无法保证这是有效的。我使用的解决方案略有不同,因为我的问题略有不同。