Unact / yandex_mapkit

Flutter implementation of YandexMapkit
MIT License
134 stars 149 forks source link

Некорректно отображается метка пользователя (UserLocationView) #201

Closed abigotado closed 2 years ago

abigotado commented 2 years ago

Добрый день!

Возникают проблемы с отображением метки пользователя.

Пытаюсь сделать так, чтоб местоположение пользователя отмечалось только pin с буквой "Я". Без стрелочки и радиуса точности. Выставляю view.arrow.copyWith(isVisible: false) и view.accuracyCircle.copyWith(isVisible: false), однако ничего не меняется.

Эмулятор iOS продолжает отображать синий круг:

Снимок экрана 2022-03-11 в 19 23 16

Телефон (не эмулятор) Android и вовсе показывает только стрелку и круг, а pin появляться не хочет:

photo_2022-03-11_19-31-35

Пример кода:

YandexMapController _controller;

YandexMap(
              onMapCreated: (YandexMapController controller) async {
                _controller = controller;
                await _controller.toggleUserLayer(visible: true);
              },
              onUserLocationAdded: (UserLocationView view) async {
                view = view.copyWith(
                  pin: view.pin.copyWith(
                    opacity: 1.0,
                  ),
                  arrow: view.arrow.copyWith(isVisible: false),
                  accuracyCircle:
                      view.accuracyCircle.copyWith(isVisible: false),
                );
                return view;
              },
            ),

Как это исправить?

И ещё один момент - есть ли возможность сменить цвет pin? Или она по умолчанию зелёная и её можно только заменить на другую иконку?

DCrow commented 2 years ago

Добрый день!

Для объектов UserLocationView, isVisible не работает в нативной либе https://github.com/yandex/mapkit-ios-demo/issues/139

Можно обойти следующем путем

onUserLocationAdded: (UserLocationView view) async {
  view = view.copyWith(
    pin: view.pin.copyWith(
      opacity: 1.0,
    ),
    arrow: view.arrow.copyWith(
      icon: PlacemarkIcon.single(
        PlacemarkIconStyle(image: BitmapDescriptor.fromAssetImage('lib/assets/arrow.png'), isVisible: false)
      )
    ),
    accuracyCircle: view.accuracyCircle.copyWith(
      fillColor: Colors.transparent,
      strokeColor: Colors.transparent
    ),
  );

  return view;
}

И ещё один момент - есть ли возможность сменить цвет pin? Или она по умолчанию зелёная и её можно только заменить на другую иконку?

Это иконка ассет внутри нативной библиотеки. Тут только используя другой ассет можно изменить вид.

abigotado commented 2 years ago

@DCrow Спасибо! Вроде теперь исчезло лишнее.