flutter_google_places不显示自动完成搜索结果

时间:2019-06-03 22:44:06

标签: google-maps flutter dart google-places-api googleplacesautocomplete

我将按照以下教程中的教程进行操作,有关使用Google Maps API创建搜索功能以在地图上查找位置的信息:

Medium.com flutter tutorial

以下是我认为构成问题核心的代码:

 /**
* Retrieves the user's location
* NOTE: This pretty much does the same thing as _animateToUser,
* but I separated the two
*/
Future<LatLng> getUserLocation() async {
 var currentLocation = <String, double>{};
 final uLocation = LocationManager.Location();
try {
  currentLocation = await uLocation.getLocation();
  final lat = currentLocation["latitude"];
  final lng = currentLocation["longitude"];
  final center = LatLng(lat, lng);
  return center;
} on Exception {
  currentLocation = null;
  return null;
}
}

/**
 * Searches for locations using Google Maps API
*/
Future<void> _search() async {
try {
  final center = await getUserLocation();
  Prediction p = await PlacesAutocomplete.show(
      context: context,
      strictbounds: center == null ? false : true,
      apiKey: kGoogleApiKey,
      onError: onError,
      mode: Mode.overlay,
      language: "en",
      location: center == null
          ? null
          : Location(center.latitude, center.longitude),
      radius: center == null ? null : 10000);

  showDetailPlace(p.placeId);
} catch (e) {
  return;
}
}

/**
* Shows details of a place
*/
Future<Null> showDetailPlace(String placeId) async {
if (placeId != null) {
  Navigator.push(
    context,
    MaterialPageRoute(builder: (context) => 
    PlaceDetailWidget(placeId)),
  );
 }
 } /**
 * Retrieves the user's location
 * NOTE: This pretty much does the same thing as _animateToUser,
 * but I separated the two
 */
Future<LatLng> getUserLocation() async {
var currentLocation = <String, double>{};
final uLocation = LocationManager.Location();
try {
  currentLocation = await uLocation.getLocation();
  final lat = currentLocation["latitude"];
  final lng = currentLocation["longitude"];
  final center = LatLng(lat, lng);
  return center;
} on Exception {
  currentLocation = null;
  return null;
}
}`

问题在于,无论我在搜索栏中输入什么内容,它都不会自动完成/建议任何事情。

示例:enter image description here

在此示例中,我想显示一个列表,其中包含单词“ grand”,例如“大中央车站”。

3 个答案:

答案 0 :(得分:3)

在控制台中查找错误。就我而言,我的帐单已链接并启用了相关 API,但它仍然从未显示预测。然后我将以下严格边界和类型添加为非空值。

Prediction p = await PlacesAutocomplete.show(
                  context: context,
                  apiKey: Local.googleMapsAPIKey,
                  radius: 10000000,
                  types: [],
                  strictbounds: false,
                  mode: Mode.overlay,
                  language: "fr",
                  decoration: InputDecoration(
                    hintText: 'Search',
                    focusedBorder: OutlineInputBorder(
                      borderRadius: BorderRadius.circular(20),
                      borderSide: BorderSide(
                        color: Colors.white,
                      ),
                    ),
                  ),
                  components: [Component(Component.country, "fr")],
                );

答案 1 :(得分:1)

检查您的帐单是否已在Google APIS上激活

答案 2 :(得分:0)

我知道了。 _search()函数的半径为radius: center == null ? null : 10000);,该半径用于计算给定半径内的周围区域。我的模拟器的位置位于大西洋中部(单独发行,但非常小)。由于在海洋中我所在的位置附近没有任何以“盛大”开头的地方,因此没有任何事情发生。我将半径从10000增加到10000000,并开始寻找位置。