我想将两个place-api调用组合在一起,以获得有关列表的更多信息。
示例:
我的第一个脚本请求提供了API的名称和地址。但是,Placesearch API不提供我需要的邮政编码或其他信息。
我当前的脚本向我显示了这一点:
name;adress,lnt,lng,place_id
但是我需要为每个列表提供更多信息,例如邮政编码(此处未包括)。
如何为每个place_id包含第二个API调用并显示邮政编码?
$apikey = 'KEY';
$url = "https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=51.374,10.1495&rankby=distance&name=keyword&language=de&key=$apikey";
$json = file_get_contents($url);
$obj = json_decode($json, true);
for($i=0; $i<count($obj['results']); $i++) {
echo "" . $obj['results'][$i]['name'] . ";" . $obj['results'][$i]['vicinity'] . ";" . $obj['results'][$i]['geometry']['location']['lat'] . ";" . $obj['results'][$i]['geometry']['location']['lng'] . ";" . $obj['results'][$i]['place_id'] . DISPLaY POSTCODE "<BR>";
};
我知道,我需要为每个place_id运行此查询:
https://maps.googleapis.com/maps/api/place/details/json?placeid=$place_id=name,rating,formatted_phone_number&key=YOUR_API_KEY
但是如何将其与最初的结果结合在一起?我需要:
Name;Adress;Postcode;LAT;LNG;
更新:
第一个请求:
$apikey = 'KEY';
$url = "https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=51.374,10.1495&rankby=distance&name=keyword&language=de&key=$apikey";
$json = file_get_contents($url);
$obj = json_decode($json, true);
for($i=0; $i<count($obj['results']); $i++) {
echo "" . $obj['results'][$i]['name'] . ";" . $obj['results'][$i]['vicinity'] . ";" . $obj['results'][$i]['geometry']['location']['lat'] . ";" . $obj['results'][$i]['geometry']['location']['lng'] . ";" . $obj['results'][$i]['place_id'] . DISPLaY POSTCODE "<BR>";
};
这是第一个请求的一个前响应,ChIJidzOXaLBpEcRxEKHcEN9fuo是我必须请求详细信息的地方ID:
Flinsberger Sportplatz;Heilbad Heiligenstadt;51.3163051;10.1929773;ChIJidzOXaLBpEcRxEKHcEN9fuo
这是api调用,显示我需要并可以访问的Needed详细信息:
https://maps.googleapis.com/maps/api/place/details/json?placeid=ChIJidzOXaLBpEcRxEKHcEN9fuo=name,rating,formatted_phone_number&key=YOUR_API_KEY
我需要在第1个请求中包含第2个请求,才能获得ex。特定项目的邮政编码,这是我不知道的问题。
,结果应为: 名称,地址,邮政编码,...,...,...
答案 0 :(得分:0)
在评论之后,我想到了这个。请注意,我自己没有要测试的API密钥,这个想法就在那里。您可能需要根据第二个查询(循环中的查询)的$obj2
函数的结果来调整对json_decode
的引用。
<?php
$apikey = 'KEY';
$url1 = "https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=51.374,10.1495&rankby=distance&name=keyword&language=de&key=$apikey";
$json1 = file_get_contents($url1);
$obj1 = json_decode($json1, true);
for( $i = 0; $i < count($obj1['results']); $i++)
{
$place_id = $obj1['results'][$i]['place_id'];
$url2 = "https://maps.googleapis.com/maps/api/place/details/output?json&key=" .$apikey . "&placeid=" . $place_id . "&fields=address_component"
$json2 = file_get_contents($url2);
$obj2 = json_decode($json2, true);
echo "" . $obj1['results'][$i]['name'] . ";" . $obj1['results'][$i]['vicinity'] . ";" . $obj1['results'][$i]['geometry']['location']['lat'] . ";" . $obj1['results'][$i]['geometry']['location']['lng'] . ";" . $obj1['results'][$i]['place_id'] . $obj2['result']['address_components']['postal_code'] . "<br>";
};
?>
这个想法是,您将根据2个查询的结果从$obj1
和$obj2
获得所需的信息。