Страницы

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

четверг, 23 января 2020 г.

Google maps Button “MyLocation”

#android #google_maps #android_location


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


Как лучше реализовать метод "Отлова, когда пользователь опять начал шастать по карте,
и тем самым кнопку сделать неактивной т.е. серой"?
    


Ответы

Ответ 1



Откопал я таки официальную серию новых методов от 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 в подарок.

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

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