Страницы

Поиск по вопросам

среда, 13 марта 2019 г.

Google maps Button “MyLocation”

Я решил реализовать кнопку "Определения местоположения" со всеми состояниями, как в 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 в подарок.

Комментариев нет:

Отправить комментарий