我正在使用下面的代码来检测用户的缩放,但即使我没有碰到任何东西也会在循环中检测。如何检测设备上的人体触摸并检查他是否放大?我非常感谢任何帮助。谢谢你。
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));
}
}
});
}
答案 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;
}
};
}
}
无法保证这是有效的。我使用的解决方案略有不同,因为我的问题略有不同。