javascript — Геокодирование с помощью Google Maps без ошибок OVER_QUERY_LIMIT — Попытка с помощью PHP-решения

Я надеюсь, что вы можете помочь. На самом деле я пытаюсь предотвратить ошибку Google Maps-Api «OVER_QUERY_LIMIT». Я хочу решить это с помощью PHP вместо использования Javascript и игры с таймаутами и т. Д. Для этого я заменил эту строку:

geocoder.geocode( {'address': address}, function(results, status) {

в моем сценарии с этим:

var url_addr = encodeURIComponent(address);
$.getJSON('geocode.php?addr='+url_addr, function(data) {
var results = data.results,
status = data.status;

Дополнительно у меня есть PHP-скрипт для получения геокод-координат:

$params = "address=" . urlencode($_GET{'addr'});
$url = 'http://maps.googleapis.com/maps/api/geocode/json?sensor=false&' . $params;
$json = file_get_contents($url);
$status = json_decode($json)->status;

// check for over_query_limit status
while ($status=="OVER_QUERY_LIMIT") {
sleep(0.2); // seconds
$json = file_get_contents($url);
$status = json_decode($json)->status;
}

header('application/json');
echo $json;

После выполнения этого я вижу PHP-скрипт в консоли отладчика с прикрепленными геокод-координатами по URL-адресу, например /geocode.php?addr=432345 …

Далее в моем JS-скрипте я хочу проверить, в порядке ли google.maps.GeocoderStatus. Итак, я звоню:

if (status == google.maps.GeocoderStatus.OK) {
if (results[1]) {
console.log("Everything OK");
}
else {
console.log("Geocode is not OK");
}

Но ничего не происходит. Похоже, что статус не приходит в if-else. Я немного поиграл и попытался что-то выяснить с помощью «Firebug», но я не нашел ответа.

Есть ли у вас какие-либо идеи?

Спасибо и всего наилучшего,
Стефан

1

Решение

Я рекомендую вам использовать ваш ключ API Google в вашем PHP.

https://maps.google.com/maps/api/geocode/json?address=".$params."&key=".$key."&sensor=false

$ key = ваш ключ API Google

Это поможет вам предотвратить ошибки OVER_QUERY_LIMIT.

1

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

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

По вопросам рекламы [email protected]