Цель этого состоит в том, чтобы превратить места, которые пользователь может видеть вокруг себя с помощью стандартного плагина google_maps_flutter
, в интерактивные маркеры.При нажатии на маркер пользователь должен видеть имя, часы работы, обзоры, изображения и т. Д.
Я просто застрял при получении данных такого типа и отображении их на карте google_maps_flutter
.Я также хотел бы узнать, как вводить радиус в милях, поэтому, если пользователь хочет только места в миле, он может выбрать его по своему желанию.
То, что я прошу, будетобъяснение того, как получить данные о близлежащих местах на переменном расстоянии и как динамически размещать эти места на карте.
Глядя на рис.1 ниже для контекста, я мог бы ожидать, что при нажатии на «Биг Бен» я получу имя, часы работы, отзывы, изображения и т. Д.
Это будет сделано на примере placeId
получить изображение было бы что-то вроде: https://maps.googleapis.com/maps/api/place/photo?maxwidth=400&photoreference=${photoReference}&key=${kGoogleApiKey}
.
Рисунок 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())
Я предполагаю, что решение переработает часть кода из ответа на этот вопрос .
Спасибо