Я использую LocationComponent, чтобы показать местоположение пользователя на карте, без навигации.Мой компонент всегда возвращает местоположение каждые 20 секунд, даже если я пытаюсь передать locationRequest с другим интервалом времени.
Это для последней версии Mapbox, извините за беспорядок, но я пробовал много разных способовкак это сделать
@SuppressWarnings({"MissingPermission"})
private void enableLocationComponent() {
if (parentActivity != null) {
if (PermissionsManager.areLocationPermissionsGranted(parentActivity)) {
LocationComponentOptions options = LocationComponentOptions.builder(getActivity())
.trackingGesturesManagement(true)
.accuracyColor(ContextCompat.getColor(getContext(), R.color.colorBlueLight))
.build();
//----- Prueba
LocationComponentActivationOptions locationComponentActivationOptions = LocationComponentActivationOptions
.builder(parentActivity, map.getStyle())
// .locationEngine(locationEngine)
// .locationEngineRequest(request)
.locationComponentOptions(options)
.useDefaultLocationEngine(true)
.build();
// Get an instance of the component
locationComponent = map.getLocationComponent();
// Activate with options
// locationComponent.activateLocationComponent(parentActivity, map.getStyle(), options);
// Prueba
locationComponent.activateLocationComponent(locationComponentActivationOptions);
// Enable to make component visible
locationComponent.setLocationComponentEnabled(true);
// Set the component's camera mode
locationComponent.setCameraMode(CameraMode.TRACKING_GPS);
locationComponent.setRenderMode(RenderMode.GPS);
// locationComponent.setLocationEngine(locationEngine);
initializeLocationEngine();
makeMyLocation();
} else {
mapView.setEnabled(false);
permissionsManager = new PermissionsManager(this);
permissionsManager.requestLocationPermissions(parentActivity);
}
}
}
И затем я передаю свой запрос:
@SuppressLint("MissingPermission")
private void initializeLocationEngine() {
if(getParentActivity().getState() == STATE_AVAILABLE){
interval = intervalAvailable;
}else{
interval = intervalTravelling;
}
// if(locationEngine == null){
// locationEngine = LocationEngineProvider.getBestLocationEngine(parentActivity);
// }
request = buildEngineRequest(interval);
locationComponent.getLocationEngine().requestLocationUpdates(request, callback, getMainLooper());
}
Я ожидаю, что смогу передавать разные запросы locationRequests в зависимости от потребностей моего приложения в различных ситуациях