【问题标题】:Google Maps API direction limitGoogle Maps API 方向限制
【发布时间】:2010-01-13 16:09:37
【问题描述】:

我使用 Google Maps API 制作了一张地图,该地图显示多个用户到一个共同目的地的方向折线。所以每个用户都有自己的折线同时显示在地图上。

问题在于返回的折线数量似乎是有限的。当我有超过 10 个用户时,我停止接收折线数据。 (最后添加到地图的用户没有得到折线)。我可能会指出,加载函数似乎仍然有效(未调用错误事件侦听器),但我要么没有获得折线数据,要么拒绝绘制到地图。

每次绘制的折线数量都略有不同,这让我觉得谷歌只是不喜欢从同一个用户一次接收这么多请求,但我不能确定。

有没有人知道如何解决这个问题?我尝试提供纬度和经度而不是地址字符串来尝试减少工作量,但它似乎对绘制的折线数量没有任何影响。

【问题讨论】:

    标签: google-maps


    【解决方案1】:

    根据Google Maps API blog,您每天应该能够发出 10,000 个 GDirections 请求,而不会受到 Google 的限制。然而,我在 Google Maps API Group 上发现了一个 post,这表明存在一个单独的限制机制,它将根据您发出请求的 rate 返回 620 个 HTTP 错误。

    从您的问题来看,您的错误侦听器似乎没有被调用,所以这不太合适。但是我没有从谷歌那里找到关于这种行为的官方描述,所以我不确定。

    您是否能够缓冲您的 GDirections 请求并降低发出请求的速度?这可能是一个很好的测试,看看您是否受到请求速率限制机制的影响。

    【讨论】:

    • 终于弄清楚了如何缓冲我的请求,它似乎工作了 :) 如果我在每次调用之间留出 250 毫秒,我似乎得到了所有结果。我画了 32 条折线中的 32 条。我没有测试过任何更高的东西,但这对于大多数情况来说应该已经足够了。
    • 太棒了。很高兴你把它整理出来。
    • 感谢您提供信息,我想问您一个问题(这可能很幼稚)- 他们在地图上绘制路线(方向)的任何其他方式(这将永远免费)。
    【解决方案2】:

    我只是做了一些相当简单的事情,如下所示。我预先创建了一个包含我想要添加的所有方向的数组。我遍历我的方向,添加一个标记(我添加了一个与方向分开的标记,以便即使方向无法绘制也总是有一个标记),然后我调用 setTimeout 函数来安排方向调用,以便 Google 不会不能一下子全部搞定。然后我将毫秒的值增加了大约 250(可能不得不使用这个值)。

    var milliseconds = 0;
    for(i in directions){
        addMarker(directions[i]); //I place the marker separate to the direction so that there is always a marker even if the direction fails to draw.
    
        setTimeout( function(){
                      addDirection(directions[directionCounter]); //This is my function that makes the direction request to Google
                      directionCounter++;
                    }
                    , milliseconds);
    
        milliseconds += 250;
    }
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-24
      • 2018-02-27
      • 2018-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-17
      • 1970-01-01
      相关资源
      最近更新 更多