Мне нужна помощь с моим приложением 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;
}
}
});
}
}