flutter - 从 Google Places 文本搜索请求返回多种类型
问题描述
我正在尝试返回与用户文本输入相关的所有餐饮场所,但是我知道 Google 的文本搜索请求将只允许指定一种类型(即餐厅)。我希望能够返回以下类型的所有结果:[restaurant、cafe、meal_delivery、meal_takeaway]。此外,由于半径限制为 50 公里,我不想使用附近的文本请求。
我想知道除了使用指定的不同类型进行重复的 API 调用之外,是否有一种方法可以返回多种类型的结果。
下面是我的代码片段,它只指定了一种类型的 API 请求。
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'];
解决方案
一个解决方案是返回所有建立类型,然后检查 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);
}
}
推荐阅读
- python - 在 Airflow 2.0 中运行多个 Athena 查询
- c# - 我对 PSPropertyAdapter 的理解正确吗?
- javascript - SyntaxError:无法在模块 nextjs Vercel 之外使用导入语句
- java - Qulice 中启用 ProhibitPlainJunitAssertionsRule 的目的是什么?
- latency - 如何计算SDN网络中特定路径的抖动、损耗、带宽和延迟?
- c++ - C++ std::to_array 未定义
- .net - Visual Studio Core 和 2019 之间的互操作
- python - Azure 功能:运行/测试模式下出现 500 个内部内部服务器错误
- javascript - 如何修复“未捕获(承诺)SyntaxError:JSON 输入意外结束”?
- c# - 我正在使用 WPF SQL 数据库数据网格,我想编辑行并使它们加粗