Какие причины "Сервер API Google Maps отклонил ваш запрос. Внутренняя ошибка была найдена для этого проекта API".?
Это использует API статических карт.
У меня есть веб-страница с 3 тегами img, каждый из которых является вызовом API статических карт (NB, конечно, это не настоящий ключ API).
Эти 3 тега идентичны, за исключением увеличения, которое составляет 10, 13 и 16 для трех изображений.
Ключ API взят из проекта, в котором включен API статических карт, настроен и включен биллинг.
Я отправил около 60 запросов (это совершенно новый проект разработки, так что я только начинаю).
Что я вижу, так это то, что иногда отображаются все три карты. В других случаях одна (случайная из трех) карта терпит неудачу с
403 "Сервер API Карт Google отклонил ваш запрос. Внутренняя ошибка была обнаружена для этого проекта API."
Поэтому, если я обновлю страницу 5 раз, то есть 15 запросов, я получу около 4 сбоев и 11 успехов.
Так почему же Google Maps случайно отклоняет некоторые запросы с этим 403?
Ответы
Ответ 1
Вы уверены, что ваш ключ API верен?
Из https://developers.google.com/maps/documentation/staticmaps/#Limits:
API Google Статических Карт имеет следующие пределы использования:
-
Без ключа API:
1000 запросов статических карт на каждый IP-адрес за 24-часовой период. 50 запросов статических карт на каждый IP-адрес в минуту. Это означает, что если у вас есть одна страница, содержащая более 50 карт, страница будет превышать этот предел.
Дополнительные запросы изображения могут быть приобретены на основе каждого приложения по курсу, указанному в FAQ. Дополнительная квота приобретается через API-консоль и требует использования ключа API.
Если пользователь превышает эти ограничения, сервер вернет статус HTTP 403 и отобразит нижеприведенное изображение, чтобы указать, что превышена квота:
![403 screenshot]()
Кажется, что 50 карт в минуту могут объяснить ваши случайные ошибки 403.
Если это не проблема, я бы подал заявку на поддержку поддержки Google Geo, так как она обозначалась как "внутренняя ошибка".
Ответ 2
Итак, если я обновляю страницу 5 раз, т.е. 15 запросов, я получаю около 4 неудач и 11 успехов.
Я думаю, что ваши запросы превысят предел за короткое время.
Я не уверен, как вы показываете карту, но я рекомендую вам последовательно загружать карту.
Пример: использование JavaScript с https://github.com/caolan/async
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<style type="text/css">
html,body {
height: 100%;
margin: 0;
padding: 0
}
</style>
<script type="text/javascript" src="async.js"></script>
<script type="text/javascript">
function loadImg(params, callback) {
var url = "http://maps.googleapis.com/maps/api/staticmap?" +
params + "&zoom=1&size=100x100" +
"&sensor=false&key={YOUR_KEY_IS_HERE}";
var img = new Image();
img.src = url;
img.onload = function() {
document.body.appendChild(img);
callback();
};
img.onerror = function() {
callback(url);
}
}
function loadMaps() {
var urlList = [
"markers=label:0|LosAngles",
"markers=label:1|NewYork",
"markers=label:2|SanFrancisco",
"markers=label:3|Frorida",
"markers=label:4|Arizona",
"markers=label:5|Ohaio",
"markers=label:6|Hawai",
"markers=label:7|Texus",
"markers=label:8|Seattle",
"markers=label:9|Florida",
"markers=label:A|kansas",
"markers=label:B|utah",
"markers=label:C|iowa",
"markers=label:D|oregon",
"markers=label:E|alaska",
"markers=label:F|Washington D.C"
];
async.eachSeries(urlList, loadImg, function(err) {
if (err) {
console.log("error", err);
} else {
console.log("all image are loaded");
}
});
}
</script>
</head>
<body onload="loadMaps()">
</body>
</html>
![enter image description here]()