OnCameraChangeListener() устарел
Сегодня, оглядываясь на мой старый код, я обнаружил, что OnCameraChangeListener() теперь устарел.
Мне трудно понять, как исправить этот кусок кода:
mGoogleMap.setOnCameraChangeListener(new GoogleMap.OnCameraChangeListener() {
@Override
public void onCameraChange(CameraPosition cameraPosition) {
// Cleaning all the markers.
if (mGoogleMap != null) {
mGoogleMap.clear();
}
mPosition = cameraPosition.target;
mZoom = cameraPosition.zoom;
if (mTimerIsRunning) {
mDragTimer.cancel();
}
mDragTimer.start();
mTimerIsRunning = true;
}
});
Новый метод прослушивания (aka OnCameraMoveListener()) onCameraMove() не имеет входной переменной CameraPosition cameraPosition, поэтому я довольно потерян: есть ли способ утилизации моего старого кода?
Здесь некоторые ссылки.
Благодарим вас за помощь.
Ответы
Ответ 1
В новой модели для событий изменений камеры вы правы, что CameraPosition
не передается в прослушиватель.
Вместо этого вы должны просто использовать getCameraPosition() всякий раз, когда вам это нужно (т.е. когда начинается перемещение, перемещение в середине, отменяется или завершается/возвращается холостой ход).
Ответ 2
В play-services-maps версии 9.4.0 API, они заменили GoogleMap.OnCameraChangeListener()
тремя камерами:
-
GoogleMap.OnCameraMoveStartedListener
-
GoogleMap.OnCameraMoveListener
-
GoogleMap.OnCameraIdleListener
На основе вашего кода, я думаю, вам нужно использовать GoogleMap.OnCameraIdleListener
и GoogleMap.OnCameraMoveStartedListener
следующим образом:
mGoogleMap.setOnCameraMoveStartedListener(new GoogleMap.OnCameraMoveStartedListener() {
@Override
public void onCameraMoveStarted(int i) {
mDragTimer.start();
mTimerIsRunning = true;
}
});
mGoogleMap.setOnCameraIdleListener(new GoogleMap.OnCameraIdleListener() {
@Override
public void onCameraIdle() {
// Cleaning all the markers.
if (mGoogleMap != null) {
mGoogleMap.clear();
}
mPosition = mGoogleMap.getCameraPosition().target;
mZoom = mGoogleMap.getCameraPosition().zoom;
if (mTimerIsRunning) {
mDragTimer.cancel();
}
}
});
Ответ 3
Рекомендуется использовать только что появившихся четырех слушателей камеры (OnCameraIdleListener
, OnCameraMoveListener
, OnCameraMoveStartedListener
, OnCameraMoveCanceledListener
), но если вы все еще хотите пойти с setOnCameraChangeListener
, используйте определенную версию android-maps-utils
( Ниже)
compile 'com.google.maps.android:android-maps-utils:0.4.3'
на уровне вашего модуля gradle.