public void repaintRotationIndicator(final float bearing) {
        if (getActivity() == null) {
            return;
        }
        final ImageView compassrose = getActivity().findViewById(R.id.map_compassrose);
        if (compassrose == null) { // can be null after screen rotation
            return;
        }
        compassrose.setRotation(AngleUtils.normalize(360f - bearing));
        compassrose.setOnClickListener(v -> {
            final boolean isRotated = getCurrentBearing() != 0f;
            setBearing(0.0f);
            repaintRotationIndicator(0.0f);
            if (isRotated && (Settings.getMapRotation() == Settings.MAPROTATION_AUTO_LOWPOWER || Settings.getMapRotation() == Settings.MAPROTATION_AUTO_PRECISE)) {
                Dialogs.advancedOneTimeMessage(getActivity(), MAP_AUTOROTATION_DISABLE, getString(MAP_AUTOROTATION_DISABLE.messageTitle), getString(MAP_AUTOROTATION_DISABLE.messageText), "", true, null, () -> Settings.setMapRotation(Settings.MAPROTATION_MANUAL));
            }
        });
        compassrose.setOnLongClickListener(v -> {
            final UnifiedMapActivity activity = (UnifiedMapActivity) getActivity();
            activity.findViewById(R.id.container_rotationmenu).setVisibility(View.VISIBLE);
            MapSettingsUtils.showRotationMenu(activity, newRotationMode -> {
                activity.setMapRotation(newRotationMode);
                activity.findViewById(R.id.container_rotationmenu).setVisibility(View.GONE);
            });
            return true;
        });
    }
map "center" should be at app. 25% from bottom if in driving mode (if supported by map), centered otherwise
main/src/main/java/cgeo/geocaching/unifiedmap/AbstractMapFragment.java