yandex / yandex_maps_mapkit_lite

Other
4 stars 0 forks source link

Сделать тип возвращаемого значения Future? #11

Closed sashachekunov closed 4 days ago

sashachekunov commented 2 weeks ago

Приветствую!

Предполагаю, что 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));
  }
sashachekunov commented 2 weeks ago

Спасибо за примеры https://github.com/yandex/mapkit-flutter-demo Буду разбираться