导致“Google Maps API服务器拒绝了您的请求的原因。此API项目发现内部错误。”?

时间:2014-02-21 12:19:12

标签: google-maps google-maps-api-3

这是使用Static Maps API。

我有一个包含3个img标签的网页,每个标签都是对静态maps API的调用,(当然这不是真正的api密钥)。

除了变焦之外,3个标签是相同的,三幅图像分别为10,13和16。

API Key来自启用了Static maps API的项目,并且已配置并启用了计费。

我总共发出了60个请求(这是一个全新的开发项目,所以我刚刚开始)。

我所看到的是,有时会显示所有三张地图。在其他时间,一个(从三个中随机)地图失败并带有

  

403“Google Maps API服务器拒绝了您的请求。此API项目发现内部错误。”

因此,如果我刷新页面5次,即15次请求,我会得到大约4次失败和11次成功。

那么,为什么Google地图会随机拒绝使用此403的某些请求?

2 个答案:

答案 0 :(得分:0)

您确定您的API密钥是否正确?

来自https://developers.google.com/maps/documentation/staticmaps/#Limits

  

Google Static Maps API具有以下使用限制:

     
      
  • 没有API密钥:

         每小时每个IP地址

    1,000个静态地图请求。   每分钟每个IP地址50个静态地图请求。这意味着如果您有一个包含50个以上地图的单个页面,该页面将超出此限制。

  •   
     

可以按照应用程序中当前列出的费率,按应用程序购买其他图像请求。额外的配额是通过API控制台购买的,需要使用API​​密钥。

     

如果用户超出这些限制,服务器将返回HTTP 403状态并显示以下图像以指示已超出配额:

     

403 screenshot

似乎每分钟50张地图可以解释你的随机403错误。

如果这不是问题,我会提交支持Google Geo的支持票,因为它被标记为“内部错误”。

答案 1 :(得分:-1)

  

因此,如果我刷新页面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