Трепетание - близлежащие места с google_maps_webservice и google_maps_flutter - PullRequest
1 голос
/ 26 сентября 2019

Цель этого состоит в том, чтобы превратить места, которые пользователь может видеть вокруг себя с помощью стандартного плагина google_maps_flutter, в интерактивные маркеры.При нажатии на маркер пользователь должен видеть имя, часы работы, обзоры, изображения и т. Д.

Я просто застрял при получении данных такого типа и отображении их на карте google_maps_flutter.Я также хотел бы узнать, как вводить радиус в милях, поэтому, если пользователь хочет только места в миле, он может выбрать его по своему желанию.

То, что я прошу, будетобъяснение того, как получить данные о близлежащих местах на переменном расстоянии и как динамически размещать эти места на карте.

Глядя на рис.1 ниже для контекста, я мог бы ожидать, что при нажатии на «Биг Бен» я получу имя, часы работы, отзывы, изображения и т. Д.

Это будет сделано на примере placeIdполучить изображение было бы что-то вроде: https://maps.googleapis.com/maps/api/place/photo?maxwidth=400&photoreference=${photoReference}&key=${kGoogleApiKey}.

example map

Рисунок 1.

Редактировать:

После игры с выводами Sreerams я получаю это возвращенное вместо каждого соседнего места:

Instance of 'PlacesSearchResult', Instance of 'PlacesSearchResult', Instance of 'PlacesSearchResult', Instance of 'PlacesSearchResult', Instance of 'PlacesSearchResult', Instance of 'PlacesSearchResult', Instance of 'PlacesSearchResult', Instance of 'PlacesSearchResult', Instance of 'PlacesSearchResult', Instance of 'PlacesSearchResult', Instance of 'PlacesSearchResult', Instance of 'PlacesSearchResult', Instance of 'PlacesSearchResult', Instance of 'PlacesSearchResult', Instance of 'PlacesSearchResult', Instance of 'PlacesSearchResult', Instance of 'PlacesSearchResult', Instance of 'PlacesSearchResult', Instance of 'PlacesSearchResult', Instance of 'PlacesSearchResult'

Это то, что я использую для получения этих данных:

  static String kGoogleApiKey = 'myKey';
  GoogleMapsPlaces _places = GoogleMapsPlaces(apiKey: kGoogleApiKey);

  List<PlacesSearchResult> places = [];

  void _onMapCreated(GoogleMapController controller) {
    mapController = controller;
    getNearbyPlaces(LatLng(lat,lng));
  }

  void getNearbyPlaces(LatLng center) async {
    final location = Location(lat, lng);
    final result = await _places.searchNearbyWithRadius(location, 2500);

    setState(() {
      if (result.status == "OK") {
        this.places = result.results;

      }
      print(result.status);
    });
  }

Это то, что яЯ использую для отображения этих данных:

Text(places[i].toString())

Я предполагаю, что решение переработает часть кода из ответа на этот вопрос .

Спасибо

1 Ответ

2 голосов
/ 28 сентября 2019

Добавить карту внутри ListView , в каждой строке отображается название места, адрес и тип.Встроенный MapView в верхней части отображает все маркеры мест.Когда пользователь нажимает на строку, приложение переходит к экрану сведений о месте, передавая placeId.

Future<Null> showDetailPlace(String placeId) async {
    if (placeId != null) {
        Navigator.push(
        context,
        MaterialPageRoute(builder: (context) => PlaceDetailWidget(placeId)),
        );
    }
}

class PlaceDetailWidget extends StatefulWidget {
    String placeId;
    PlaceDetailWidget(String placeId) {
        this.placeId = placeId;
}

Найдите подробное объяснение по этому вопросу Раджеш Мутхьяла

enter image description here

...