google api — рекурсивное геокодирование в переполнении стека

Я анализирую относительно большое количество координат в PHP в течение for цикл и я делаю обратное геокодирование, вызывая следующую функцию:

function getLocation( $coordinates )
{
$url = 'http://maps.googleapis.com/maps/api/geocode/json?latlng=' . trim($coordinates) . '&sensor=false';
$json = @file_get_contents($url);
$data = json_decode($json);
$status = $data->status;
//print_r ( $data->results[ 0 ]);
if ($status == "OK")
{
return $data->results[ 0 ]->address_components[ 1 ]->long_name . ", " . $data->results[ 0 ]->address_components[ 2 ]->long_name;
}
else
{
return false;
}
}

Возникла проблема в том, что довольно часто Google (логически) отвечает мне нулевым json_array, и у меня нет обратного геокодирования каждой координаты.

как я могу обойти эту проблему? Знаете ли вы какой-либо другой сервис?
Я видел много библиотек для обратного геокодирования, но я бы предпочел использовать их как последний ресурс, чтобы не утяжелить мой маленький проект.

0

Решение

Хорошо, Google обычно дает вам причину, почему это не удалось. Из прошлого опыта я знаю, что он потерпит неудачу, если вы дадите слишком много в определенное время, поэтому вам нужно поставить sleep (500) или что-то еще, чтобы не перегружать Google.

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

Также есть некоторые правила, которые вы можете добавить, например,

https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&location_type=ROOFTOP&result_type=street_address&key=YOUR_API_KEY

Ограничит ваши результаты и может дать вам лучший адрес.

Это, вероятно, хорошая идея хранить любые адреса, которые у вас есть.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector