Объединить 2 места запроса, чтобы получить почтовый индекс - PullRequest
1 голос
/ 26 июня 2019

Я хотел бы объединить два вызова Place-API в один, чтобы получить дополнительную информацию о списках.

Пример:

Мой первый запрос сценария предоставляет имя и адрес из API. Однако API Placesearch не предоставляет почтовый индекс или другую необходимую мне информацию.

Мой текущий скрипт показывает мне это:

name;adress,lnt,lng,place_id

но мне нужно больше информации для каждой записи, например, почтовый индекс, который здесь не указан.

Как включить второй вызов API для каждого place_id и отобразить почтовый индекс?


$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;

Обновление:

1-й запрос:

$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 - это идентификатор места, где мне нужно запросить подробную информацию:

Flinsberger Sportplatz;Heilbad Heiligenstadt;51.3163051;10.1929773;ChIJidzOXaLBpEcRxEKHcEN9fuo

это вызов API показывает подробности, которые мне нужны и к которым можно получить доступ:

https://maps.googleapis.com/maps/api/place/details/json?placeid=ChIJidzOXaLBpEcRxEKHcEN9fuo=name,rating,formatted_phone_number&key=YOUR_API_KEY

Мне нужно включить второй запрос в первый, чтобы получить за экс. почтовый индекс для конкретного элемента, который является моей проблемой, я не знаю.

и результат должен быть: имя, адрес, почтовый индекс, ..., ..., ...

1 Ответ

0 голосов
/ 26 июня 2019

После комментариев я придумал это.Обратите внимание, что у меня нет ключа 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>";
};

?>

Идея состоит в том, что вы получаете информацию, которую выформа запроса $obj1 и $obj2 на основе результатов 2 запросов.

...