Android / Google Map - симуляция фокуса расположения устройства на карте Google - PullRequest
0 голосов
/ 20 марта 2020

Мне нужна помощь с моим приложением Android.

На карте Google, когда вы нажимаете кнопку MyLocationButton, камера фиксирует движение устройства, пока карта не будет удалена. Я пытаюсь смоделировать это поведение на своей карте.

Мой текущий код может вернуть местоположение устройства и заблокировать его. Проблема в обновлении состояния блокировки / разблокировки.

У меня была следующая идея: - по умолчанию блокировка камеры на устройстве. - когда камера движется, проверьте положение, когда она остановилась. Если он остановился поверх местоположения устройства, то камера все еще заблокирована. ELSE камера разблокирована.

Это правильный подход или есть лучшие способы?

Спасибо, код:

@Override
public void onMapReady(GoogleMap googleMap) {
    Log.d(TAG, "onMapReady: map loaded");
    Toast.makeText(this, "Eat Safe!", Toast.LENGTH_SHORT).show();
    map = googleMap;

    if (locationPermissionGranted) {
        getLastKnownLocation();
        map.setMyLocationEnabled(true);
        map.setOnMyLocationButtonClickListener(new GoogleMap.OnMyLocationButtonClickListener() {
            @Override
            public boolean onMyLocationButtonClick() {
                Log.d(TAG, "onMyLocationButtonClick: camera locked");
                cameraLocked = true;
                return true;
            }
        });
        map.setOnCameraIdleListener(new GoogleMap.OnCameraIdleListener() {
            @Override
            public void onCameraIdle() {
                Log.d(TAG, "setOnCameraIdleListener: camera Idle");
                LatLng cameraPosition = map.getCameraPosition().target;
                if(cameraPosition.equals(myLocation)){
                    Log.d(TAG, "setOnCameraIdleListener: camera on top of device");

                }else{
                    Log.d(TAG, "setOnCameraIdleListener: camera unlocked");
                    cameraLocked = false;
                }
            }
        });
    }
}

1 Ответ

0 голосов
/ 21 марта 2020

Хорошо. Я разобрался.

Я изменил setOnCameraIdleListener на onCameraMove, что имело больше смысла.

Таким образом, каждый раз, когда камера перемещалась, проверяйте, находится ли камера поверх устройства или нет.

затем, onCameraMove внутри должен учитывать некоторые ошибки, когда они возвращают десятичные значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...