У меня есть такой url, который ищет что-то в месте:
https://maps.google.com/maps?q=dentist+Austin+Texas&hl=en&mrt=yf=l
Мне нужен список первых двух результатов, таких как ("Dentist Mr.Example1", "Dentist Ex.2").
Наблюдение за этим вопросом: какие параметры следует использовать в URL-адресе Google Maps для перехода на lat-lon? , Я думаю, что URL правильный.
И наблюдая за этим: Получите широту и долготу автоматически, используя php, API. Я пробую эти два варианта:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_PROXYPORT, 3128);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$response = curl_exec($ch);
curl_close($ch);
$response_a = json_decode($data);
а также это:
$content= file_get_contents($url);
preg_match_all("|<span class=\"pp-place-title\">(.*?)</span></span>|",$content,$result);
В обоих случаях у меня нет никаких результатов. Заранее спасибо!
У меня есть такой url, который ищет что-то в месте:
https://maps.google.com/maps?q=dentist+Austin+Texas&hl=en&mrt=yf=l
Мне нужен список первых двух результатов, таких как ("Dentist Mr.Example1", "Dentist Ex.2").
Это запрос API Карт Google.
Ну вот:
$searchTerm = 'dentist+austin+texas';
$url = 'https://maps.googleapis.com/maps/api/geocode/json?address=' . $searchTerm;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$response = curl_exec($ch);
curl_close($ch);
$array = json_decode($response, true);
// var_dump($array);
// Output
$array = $array['results'];
foreach($array as $index => $component)
{
echo '#' . $index . ' ' . $component['formatted_address'] . '<br>';
// show only the first 2 items (#0 & #1)
if($index === 1) {
break;
}
}
Некоторые примечания:
Ссылка: https://developers.google.com/maps/documentation/geocoding/
Это почти идеально, но я хотел бы получить также номер телефона и рейтинг (звезды для обзоров).
Первоначальный вопрос состоял в том, чтобы перечислить первые результаты для стоматологов в austin, tx, используя API Карт Google.
Это дополнительное требование изменяет API/webservice для использования, чтобы получить богатые данные. Вы хотите получить более подробную информацию об адресах. Элементы данных "phone_number" и "рейтинг" являются частью веб-сервиса Google Places (сведения о месте). Чтобы получить доступ к этой службе, вам необходимо добавить свой ключ к URL-адресам запроса (&key=API_KEY
).
https://developers.google.com/places/webservice/details#PlaceDetailsRequests
Это запрос на детали места:
1) С первого запроса вы извлекаете "place_id".
2) С последующими запросами вы получаете информацию о каждом месте через веб-сервис "Детали места".
Пример: здесь я использую placeid
для первой записи:
Новый код:
<?php
// Google GeoCode API
$address = 'dentist+austin+texas';
$array = getGoogleGeoCode($address);
$array = $array['results'];
//var_dump($array);
foreach($array as $index => $component)
{
echo '#' . $index . ' ' . $component['formatted_address'] . ', ' ;
// subsequent request for "Place Details"
$details = getGooglePlaceDetails($component['place_id']);
$details = $details['result'];
//var_dump($details);
echo 'Phone: ' . $details['formatted_phone_number']. ', ' ;
// rating contains the place rating, from 1.0 to 5.0, based on aggregated user reviews.
if(isset($details['rating'])) {
echo 'Rating: ' . $details['rating'];
}
// show only the first two entries
/*if($index === 1) {
break;
}*/
echo '<br>';
}
function getGooglePlaceDetails($placeid)
{
// your google API key
$key = 'AIzaSyCj9yH5x6_5_Om8ebAO2pBlaqJZB-TIViY';
$url = 'https://maps.googleapis.com/maps/api/place/details/json?placeid=' . $placeid . '&key=' . $key;
return curlRequest($url);
}
function getGoogleGeoCode($address)
{
$url = 'https://maps.googleapis.com/maps/api/geocode/json?address=' . $address;
return curlRequest($url);
}
function curlRequest($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$response = curl_exec($ch);
curl_close($ch);
return json_decode($response, true);
}
Результат:
rating
элемента массива не всегда присутствует, потому что он проверяется на основе. Просто используйте var_dump($details);
чтобы увидеть, что там, и выбрать то, что вам нужно.