Как установить заголовок расположения устройств с помощью Mapbox? - PullRequest
0 голосов
/ 10 марта 2020

Вместо использования механизма определения местоположения по умолчанию у меня есть специальное решение, которое предоставляет мне события местоположения с помощью обратного вызова onCustomLocationEvent(). Используя Mapbox Android SDK, я хотел бы установить текущее местоположение устройств (ie. Синяя точка), используя значения, возвращаемые событием пользовательского местоположения. Другими словами, я хотел бы установить положение синей точки, радиус круга точности и направление стрелки.

enter image description here

До сих пор я успешно все сделал, кроме установки направления стрелки. Я могу создать новый CompassEngine и установить заголовок, но это не изменит обновление пользовательского интерфейса с синей точкой. Есть ли какой-то метод, о котором я не знаю, например mapboxMap.getLocationComponent().getCompassEngine().setHeading(), или это невозможно с Mapbox Android SDK? Спасибо!

public void onCustomLocationEvent(double latitude, double longitude, float heading, float bearing, float accuracy) {

    Location location = new Location("customLocation");
    location.setLatitude(latitude);
    location.setLongitude(longitude);
    location.setAccuracy(accuracy);
    // location.setBearing(bearing); has no effect 

    CompassEngine engine = new CompassEngine() {

        @Override
        public void addCompassListener(@NonNull CompassListener compassListener) {

        }

        @Override
        public void removeCompassListener(@NonNull CompassListener compassListener) {

        }

        @Override
        public float getLastHeading() {
            return heading; // does not update the UI
        }

        @Override
        public int getLastAccuracySensorStatus() {
            return 0;
        }
    };

    mapboxMap.getLocationComponent().setCompassEngine(engine);

}

...