Я решил реализовать кнопку "Определения местоположения" со всеми состояниями, как в Google maps.
Подробнее:
Неактивная - Когда пользователь шастает по карте.
Активная - Когда пользователь определил свое местоположение на карте, и камера следует за ее перемещением.
Теперь к коду:
Кнопка определения местоположения:
FAB.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
cameraFromPosition();
followUser = true;
FAB.setColorFilter(ContextCompat.getColor(getApplicationContext(),R.color.primary)); // синий цвет т.е. активная
}
});
Слежка за местоположением:
@Override
public void onLocationChanged(Location location) {
if (followUser) { // начинаем слежку т.к. нажата кнопка "определения местоположения" и цвет ей синий
cameraFromPosition();
}
}
Как лучше реализовать метод "Отлова, когда пользователь опять начал шастать по карте, и тем самым кнопку сделать неактивной т.е. серой"?
Ответ
Откопал я таки официальную серию новых методов от Google [Doc], которые отлавливают скролл по карте и не только.
P.S. all inclusive.
Для решения моей задачи хватило только следующее:
implements GoogleMap.OnCameraMoveStartedListener
В методе public void onMapReady(GoogleMap googleMap)
добавитьmap.setOnCameraMoveStartedListener(this);
И последнее:
@Override
public void onCameraMoveStarted(int reason) {
if (reason == GoogleMap.OnCameraMoveStartedListener.REASON_GESTURE) {
followUser = false;
FAB.setColorFilter(ContextCompat.getColor(getApplicationContext(),R.color.grey));
}
}
P.S. Готовый Callback от Google в подарок.
Комментариев нет:
Отправить комментарий