我已经使用Google Maps API制作了一个地图,可以显示多个用户到公共目的地的方向折线。因此,每个用户同时在地图上显示自己的折线。
问题在于返回的折线数量似乎有限。当我有超过10个用户时,我停止接收折线数据。 (要添加到地图的最后一个用户不会获得折线)。我可能会指出加载函数似乎仍然有效(错误事件监听器未被调用),但我要么不获取折线数据,要么拒绝绘制到地图。
每次绘制的折线数量略有不同,这让我觉得谷歌不喜欢同时从同一个用户那里收到这么多请求,但我无法确定。
有没有人有任何想法如何解决这个问题?我尝试提供纬度和经度而不是地址字符串来尝试减少工作量,但它似乎对绘制的折线数量没有任何影响。
答案 0 :(得分:2)
根据Google Maps API blog,您应该能够在不受Google限制的情况下每天发送10,000个 GDirections 请求。但是,我在Google Maps API组上发现post,表明存在一个单独的限制机制,该机制将根据您发出请求的 rate 返回620个HTTP错误。
从你的问题来看,看起来你的错误监听器没有被调用,所以这不太适合。但我还没有从谷歌找到这种行为的官方描述,所以我不确定。
您是否可以缓冲 GDirections 请求并降低您的费率?这可能是一个很好的测试,看你是否受到请求率限制机制的影响。
答案 1 :(得分:1)
我刚做了一件相当简单的事情,如下图所示。我创建了一个我想要预先添加的所有方向的数组。我循环我的方向,添加一个标记(我添加一个标记分开的方向,以便即使方向无法绘制总是有一个标记),然后我调用setTimeout函数来安排方向调用,以便谷歌没有'一下子把它们全部拿走。然后我将毫秒的值增加大约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;
}
希望这有帮助。