Перейдите к результату поиска Flutter Google Maps - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть SearchMapPlaceWidget, который предлагает мне места на основе моего поискового ключевого слова. Я хочу анимировать камеру в предложенном месте, где я нажимаю. Как мне это сделать?

Вот виджет SearchMapPlaceWidget, который я использовал из пакета search_map_place во Flutter.

SearchMapPlaceWidget(
  apiKey: myApiKey,
  onSearch: (Place place) async {
    try{
      final geolocation = await place.geolocation;
      print(geolocation);
    }catch(e){
      print(e);
    }
  },
),

1 Ответ

0 голосов
/ 24 апреля 2020

Из официального примера https://pub.dev/packages/search_map_place#example
Вы можете использовать GoogleMapController и звонить animateCamera

return SearchMapPlaceWidget(
    apiKey: YOUR_API_KEY,
    // The language of the autocompletion
    language: 'en',
    // The position used to give better recomendations. In this case we are using the user position
    location: userPosition.coordinates,
    radius: 30000,
    onSelected: (Place place) async {
        final geolocation = await place.geolocation;

        // Will animate the GoogleMap camera, taking us to the selected position with an appropriate zoom
        final GoogleMapController controller = await _mapController.future;
        controller.animateCamera(CameraUpdate.newLatLng(geolocation.coordinates));
        controller.animateCamera(CameraUpdate.newLatLngBounds(geolocation.bounds, 0));
    },
);

Из Официального примера есть весь код, который вам нужен
Экран с картой и окном поиска сверху. Когда пользователь выбирает место посредством автозаполнения, экран перемещается в выбранное место
https://github.com/Bernardi23/search_map_place/blob/master/example/advanced_example.dart
Вы можете напрямую запустить этот пример

Это слишком долго Я просто вставляю _mapController часть

Completer<GoogleMapController> _mapController = Completer();
...
GoogleMap(
            ...
            onMapCreated: (GoogleMapController controller) async {
              _mapController.complete(controller);
...
final GoogleMapController controller = await _mapController.future;
...