Я надеюсь, что вы можете помочь. На самом деле я пытаюсь предотвратить ошибку 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», но я не нашел ответа.
Есть ли у вас какие-либо идеи?
Спасибо и всего наилучшего,
Стефан
Я рекомендую вам использовать ваш ключ API Google в вашем PHP.
https://maps.google.com/maps/api/geocode/json?address=".$params."&key=".$key."&sensor=false
$ key = ваш ключ API Google
Это поможет вам предотвратить ошибки OVER_QUERY_LIMIT.
Других решений пока нет …