首页 文章

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

提问于
浏览
9

这是使用Static Maps API .

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

3个标签是相同的,除了缩放,三个图像为10,13和16 .

API密钥来自启用了静态 Map API的项目,并且已配置并启用了计费 .

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

我所看到的是,有时会显示所有三个 Map . 在其他时候,一个(从三个中随机) Map 失败了

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

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

那么为什么谷歌 Map 随机拒绝这个403的一些请求呢?

2 回答

  • 0

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

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

    Google Static Maps API具有以下使用限制:没有API密钥:每24小时每个IP地址请求1,000个静态 Map . 每分钟每个IP地址50个静态 Map 请求 . 这意味着如果您有一个包含50个以上 Map 的单个页面,该页面将超出此限制 . 可以按照应用程序中当前列出的费率按应用程序购买其他图像请求 . 通过API控制台购买额外配额,并且需要使用API密钥 . 如果用户超出这些限制,服务器将返回HTTP 403状态并显示以下图像以指示已超出配额:

    似乎每分钟50张 Map 可以解释你的随机403错误 .

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

  • -1

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

    我认为您的请求会在短时间内超出限制 . 我不确定你如何显示 Map ,但我建议你连续加载 Map .

    例如:使用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

相关问题