Предполагаю, что kit.mapkit.createLocationManager() и kit.mapkit.createUserLocationLayer(mapWindow) "под капотом" отпрабатывают асинхронно, сначала создаются LocationManager и UserLocationLayer затем происходит какая-то настройка.
Проблема, с которой я столкнулся, заключается в том, что после вызовов kit.mapkit.createLocationManager() и kit.mapkit.createUserLocationLayer(mapWindow) я запрашиваю обновленение пользовательской позиции и настраиваю вид маркера, соответственно. Добавление Future.delayed иногда решает задачу, но я предпочел бы избежать его использование.
Подскажите, пожалуйста, как корректно переместить камеру на позицию пользователя и отобразить кастомный пин геолокации при запуске карты?
p.s. предположу, что kit.mapkit.createLocationManager() и kit.mapkit.createUserLocationLayer(mapWindow) должны возвращать 'Future'
Прилагаю минимальный пример
void createLocationManager(MapWindow mapWindow) {
locationManager ??= kit.mapkit.createLocationManager();
locationManager?.requestLocationUpdate(mapWindow.map);
mapWindow.map.moveToLastKnownOrDefaultLocation();
Future.delayed( // иногда решает проблему
const Duration(seconds: 1),
() => requestSingleUpdate(
_LocationActivityListener(
onUpdateLocation: (location) => map.moveWithSmoothAnimation(location.position),
),
),
);
}
Future<void> createUserLocationLayer(MapWindow mapWindow) async {
final userLocationLayer = kit.mapkit.createUserLocationLayer(mapWindow);
await Future.delayed(const Duration(milliseconds: 1500)); // иногда решает проблему
userLocationLayer.setVisible(true);
userLocationLayer.setObjectListener(LocationPinListener(asset: widget.assets.location));
}
Приветствую!
Предполагаю, что
kit.mapkit.createLocationManager()
иkit.mapkit.createUserLocationLayer(mapWindow)
"под капотом" отпрабатывают асинхронно, сначала создаютсяLocationManager
иUserLocationLayer
затем происходит какая-то настройка.Проблема, с которой я столкнулся, заключается в том, что после вызовов
kit.mapkit.createLocationManager()
иkit.mapkit.createUserLocationLayer(mapWindow)
я запрашиваю обновленение пользовательской позиции и настраиваю вид маркера, соответственно. ДобавлениеFuture.delayed
иногда решает задачу, но я предпочел бы избежать его использование.Подскажите, пожалуйста, как корректно переместить камеру на позицию пользователя и отобразить кастомный пин геолокации при запуске карты?
p.s. предположу, что
kit.mapkit.createLocationManager()
иkit.mapkit.createUserLocationLayer(mapWindow)
должны возвращать 'Future'Прилагаю минимальный пример