【问题标题】:Return multiple types from Google Places Text Search request从 Google Places 文本搜索请求返回多种类型
【发布时间】:2020-09-14 15:15:51
【问题描述】:

我正在尝试返回与用户文本输入相关的所有餐饮场所,但我知道 Google 的文本搜索请求仅允许指定一种类型(即餐厅)。我希望能够返回以下类型的所有结果:[restaurant、cafe、meal_delivery、meal_takeaway]。此外,由于半径限制为 50 公里,我不想使用 Nearby Text 请求。

我想知道除了使用指定的不同类型进行重复 API 调用之外,是否有一种方法可以返回多种类型的结果。

下面是我发出 API 请求的代码的 sn-p,只指定了一种类型。

String baseURL =
        'https://maps.googleapis.com/maps/api/place/textsearch/json';
    String type = 'restaurant';
    int radius = 8000;

    String request =
        '$baseURL?input=$input&key=$RESTAURANT_API_KEY&query=$input&inputtype=textquery&type=$type&radius=?$radius&sessiontoken=$_sessionToken';
    Response response = await Dio().get(request);

    final textPredictions = response.data['results'];

【问题讨论】:

    标签: flutter dart async-await google-api


    【解决方案1】:

    一个解决方案是返回所有建立类型,然后检查 json 结果,如果类型字段包含“食物”

    String baseURL =
            'https://maps.googleapis.com/maps/api/place/textsearch/json';
        int radius = 8000;
    
            String request =
            '$baseURL?input=$input&key=$RESTAURANT_API_KEY&query=$input&inputtype=textquery&radius=?$radius&sessiontoken=$_sessionToken';
        Response response = await Dio().get(request);
    
        final textPredictions = response.data['results'];
    
        for (var i = 0; i < 5; i++) {
          String placeId = textPredictions[i]['place_id'];
          if (textPredictions[i]['types'].toString().contains('food')) {
            _textSearchResults.add(placeId);
          }
        }
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-08
      • 1970-01-01
      • 2013-11-29
      • 1970-01-01
      • 1970-01-01
      • 2016-04-07
      • 2013-09-24
      相关资源
      最近更新 更多