Как повернуть представление Mapbox в соответствии с направлением в Android

Я использую последнюю версию библиотеки MapBox (0.22.0). Я пытаюсь повернуть карту так, чтобы она всегда смотрела в том направлении, в котором мы движемся с помощью MapBox Android.

Это мой код:

@Override
public void onMapReady(MapboxMap mapboxMap) {
    this.mapboxmap = mapboxMap;
    mapboxMap.setStyle(Style.OUTDOORS);
    mapboxMap.getUiSettings().setAttributionEnabled(false);
    mapboxMap.getUiSettings().setCompassEnabled(true);
    mapboxMap.getUiSettings().setLogoEnabled(false);
    mapboxMap.getUiSettings().setRotateGesturesEnabled(true);
    mapboxMap.getUiSettings().setZoomControlsEnabled(true);
    initLocationEngine();
    initLocationLayer();
}

private void initLocationLayer() {
   /* LocationLayerPlugin locationLayer = new LocationLayerPlugin(mapView, mapboxmap, locationEngine);
    locationLayer.setRenderMode(RenderMode.GPS);*///(Old Lib Code 0.19.0)

    LocationComponent locationComponent = mapboxmap.getLocationComponent();
    locationComponent.activateLocationComponent(getActivity(), locationEngine);
    locationComponent.setLocationComponentEnabled(true);
    locationComponent.setCameraMode(CameraMode.TRACKING);
    locationComponent.setRenderMode(RenderMode.COMPASS);
    locationComponent.zoomWhileTracking(30);
}

@SuppressLint("MissingPermission")
private void initLocationEngine() {

    locationEngine = new  LocationEngineProvider(activity).obtainBestLocationEngineAvailable();
    locationEngine.setPriority(HIGH_ACCURACY);
    locationEngine.setInterval(0);
    locationEngine.setFastestInterval(1000);
    locationEngine.addLocationEngineListener(this);

  //userTrackingMode
       locationEngine.activate();
        if (locationEngine.getLastLocation() != null) {
        Location lastLocation = locationEngine.getLastLocation();

        onLocationChanged(lastLocation);
        currentLocation = Point.fromLngLat(lastLocation.getLongitude(), lastLocation.getLatitude());

    }
}

person Netset Android    schedule 30.10.2018    source источник


Ответы (1)


В этом фрагменте кода значок должен иметь маленькую стрелку, отражающую азимут компаса.

Если проблема здесь в поведении камеры карты, вам нужно установить режим камеры на TRACKING_COMPASS вместо TRACKING:

    locationComponent.setCameraMode(CameraMode.TRACKING_COMPASS);

Спасибо за проверку SDK, и я надеюсь, что это поможет!

person Dan Nesfeder    schedule 31.10.2018
comment
Хорошо, я попробую это, но если я установлю это (setCameraMode) масштабирование ( положение CameraPosition = new CameraPosition.Builder() .target(new LatLng(location.getLatitude(), location.getLongitude())) .zoom(15)) масштабирование (первое масштабирование) не работает, я удалил setCameraMode, масштабирование работает - person Netset Android; 31.10.2018
comment
Привет, @Dan Nesfeder Пожалуйста, ответь - person Netset Android; 01.11.2018
comment
@NetsetAndroid Да, вам нужно использовать zoomWhileTracking для настройки масштаба карты после инициализации LocationComponent. Что вы пытаетесь сделать с CameraPosition? Установить начальное положение карты? - person Dan Nesfeder; 01.11.2018
comment
Начальное значение CameraPosition onLocationChanged (местоположение) zoomWhileTracking не работает, проверьте, что мой код уже установил это. В последней версии lib 0.22.0 не работает навигация на Samsung Galaxy Note 9. - person Netset Android; 02.11.2018