gpt4 book ai didi

php - 如何获得超过 20 个结果,即。 60 将 google place API 与 PHP 结合使用?

转载 作者:IT王子 更新时间:2023-10-29 00:07:44 27 4
gpt4 key购买 nike

我正在开发一个 Google Places API 应用程序,我的目标是获取特定查询的所有可用详细信息。但据我所知,google places API 一次只返回 20 个结果。但我需要所有可用的地点详细信息。

如果我多次使用搜索关键字搜索,它总是给出相同的结果。所以我想知道每次使用相同的关键字搜索时有什么方法可以得到不同的结果。

 <?php 
$placeSearchURL = 'https://maps.googleapis.com/maps/api/place/textsearch/json?query=' . $query . '&sensor=true' . '&key=' . API_KEY;

$placeSearchJSON = file_get_contents($placeSearchURL);
$dataArray = json_decode($placeSearchJSON);
$references = array();
$detailsOfPlaces = array();

if (isset($dataArray->status)) {
switch ($dataArray->status) {
case 'OK' :
foreach( $dataArray->results as $details) {
$references[] = $details->reference;
}
break;
default:
echo "Something wrong";
}
}

foreach ($references as $reference) {
$placeDetailsURL = 'https://maps.googleapis.com/maps/api/place/details/json?reference=' . $reference . '&sensor=true&key=' . API_KEY;
$placeDetails =file_get_contents($placeDetailsURL);
$placeDetailsAsArray = json_decode($placeDetails);

switch ($dataArray->status) {
case 'OK' :
$detailsOfPlace['business_name'] = isset($placeDetailsAsArray->result->name) ? $placeDetailsAsArray->result->name : '';
$detailsOfPlace['address'] = isset($placeDetailsAsArray->result->formatted_address) ? $placeDetailsAsArray->result->formatted_address : '';

$detailsOfPlaces[] = $detailsOfPlace;
break;
default:
echo "Something went wrong";
}
}

这是我的代码。它为每个查询返回 20 个结果。谁能告诉我应该做哪些调整才能为每个查询获得 60 个结果。

谢谢

最佳答案

Google Places API 每次搜索最多可以返回 60 个结果,如果可以分成三页,最多 20 个结果。如果有超过 20 个结果可用,您可以通过将 next_page_token 传递给新搜索请求的 pagetoken 参数来访问其他结果。

有关加法结果的详细信息,请参阅 Accessing Addition Results文档中地方搜索页面的部分。

如果您只需要地点位置,您可以使用 Places API Radar Search返回多达 200 个地点。

编辑:在您的示例中,您无需为每个地点发送详细信息请求即可访问地点名称和地址。此信息在初始响应中返回,可以像下面的示例一样访问:

foreach($dataArray->results as $place) {
echo '<p><b>' . $place->name . '</b>, ' . $place->formatted_address . '</p>';
}

如果返回 next_page_token,您可以了解是否有其他页面可用于附近搜索请求。这可以像下面这样检查:

if (isset($dataArray->next_page_token)) {
//get next page
}

如果返回 next_page_token,您可以通过将 next_page_token 传递给新搜索请求的 pagetoken 参数来获取下一页结果或将其附加到原始请求的末尾。下面是使用新请求的示例:

$placeSearchURL = 'https://maps.googleapis.com/maps/api/place/textsearch/json?nextpage=' . $dataArray->next_page_token . '&sensor=true' . '&key=' . API_KEY;

作为 documentation状态:

Each page of results must be displayed in turn. Two or more pages of search results should not be displayed as the result of a single query.

因此,从发出 next_page_token 到它生效之间存在短暂的延迟。

关于php - 如何获得超过 20 个结果,即。 60 将 google place API 与 PHP 结合使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13814494/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com