Вместо использования механизма определения местоположения по умолчанию у меня есть специальное решение, которое предоставляет мне события местоположения с помощью обратного вызова onCustomLocationEvent()
. Используя Mapbox Android SDK, я хотел бы установить текущее местоположение устройств (ie. Синяя точка), используя значения, возвращаемые событием пользовательского местоположения. Другими словами, я хотел бы установить положение синей точки, радиус круга точности и направление стрелки.
До сих пор я успешно все сделал, кроме установки направления стрелки. Я могу создать новый 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);
}