Как я могу обновить InfoWindowText после первоначального нажатия на маркер, используя Google Maps с Flutter? - PullRequest
0 голосов
/ 04 апреля 2019

Пользователь нажимает на маркер на карте Google в приложении флаттера на устройстве Android

Как и ожидалось, всплывающее окно информационного окна

Пользователь нажимает на информационное окно, ничего не происходит

Это былоожидается, что Title и Snipped обновлены

Попробован с несколькими версиями и кодами.

mapController.onInfoWindowTapped.add((marker) {
        _launchURL(data[i]["urlmember"]);
        // options
        print(marker.id.toString());
        print(data[i]["urlmember"]);
        MarkerOptions( infoWindowText: InfoWindowText("counseling","find us on second service"));
);

Ожидается, что в информационном окне отобразится новый заголовок и отсканировано

1 Ответ

0 голосов
/ 10 апреля 2019

Приведенный ниже фрагмент кода находится в примере приложения в пакете Google Flutter (https://pub.dartlang.org/packages/google_maps_flutter) в файле place_marker.dart):

void _updateSelectedMarker(MarkerOptions changes) {
    controller.updateMarker(_selectedMarker, changes);
  }


  void _onMarkerTapped(Marker marker) {
    if (_selectedMarker != null) {
      _updateSelectedMarker(
        const MarkerOptions(icon: BitmapDescriptor.defaultMarker),
      );
    }
    setState(() {
      _selectedMarker = marker;
    });
    _updateSelectedMarker(
      MarkerOptions(
        icon: BitmapDescriptor.defaultMarkerWithHue(
          BitmapDescriptor.hueGreen,
        ),
      ),
    );
  }

Я полагаю, что ваш способон настроен в настоящий момент, вы щелкаете по информационному окну, связанному с ранее существующим маркером, и это запускает создание другого маркера без «позиции» (т. е. со значением LatLng, которое требуется для объектов маркера), но имеет информационное окноСвойства текста. Это объясняет, почему ничего не происходит, когда вы нажимаете на информационное окно, это, по сути, создание маркера и его нигде, что означает, что нигде не будет отображаться соответствующий текст информационного окна.

Я считаю,логика, которую вы хотите реализовать, заключается в следующем: когда пользователь нажимает на информационное окно, он должен инициировать обновление уже существующего маркера. Для этого вы можете реализовать нечто похожее на фрагмент кода, который я опубликовал выше, за исключением использования onInfoWindowTapped вместоиз onMarkerTapped.

...