2011-04-07 57 views
4

我有一个页面,其形式为http://maps.google.com/maps/api/staticmap?size=600x240&markers=icon:http://100procentjan.nl/tweakers/punaise.png|shadow:false|52.369010925293,4.8560848236084&sensor=false&zoom=15&center=52.369010925293,4.8560848236084的静态地图URI。谷歌地图静态API返回奇怪的图像

当我从任何浏览器访问此页面时,它显示得很好,但不是当我通过我们的BES(但同一无线网络!)连接的Blackberry使用它时。然后,该图显示了:

Argh

有谁知道这个图像是指?

+0

对我来说也是失败,'403禁止',同样的图形。 BB个人,没有BES。 – sarnold 2011-04-07 08:18:24

回答

3

这是Google静态地图API的BB特有问题。 API速率限制是正常的,但在使用BB设备时会更频繁地出现。

他们似乎在使用IP池并将它们转出到设备。理论上这应该是一个非常间歇性的问题。如果等待几天时间,它应该消失。

换句话说,您的IP在24小时内已经达到静态地图API的1000倍以上。当您在短时间内太频繁地点击API时,也会发生这种情况。

我对此的解决方案是编写一个简单的PHP脚本,一次请求来自Google的地图图像,将其保存为一个文件,并将其保存为文件,而不是每次都点击地图API。

下面的代码:

<?php 

header('Content-Type: image/jpeg'); 

$latlng = (isset($_GET['c']))? $_GET['c'] : NULL ; 
$zoom = (isset($_GET['z']))? $_GET['z'] : 9 ; 
$file = "cache/p_$p-z_$zoom.jpg"; 

if(!file_exists($file)) 
{ 
    $parts = array(
     'center' => $latlng, 
     'zoom' => $zoom, 
     'size' => '320x240', 
     'maptype' => 'terrain', 
     'sensor' => 'false', 
     'format' => 'jpeg' 
    );  

    file_put_contents(
     $file, file_get_contents("http://maps.googleapis.com/maps/api/staticmap?".implode('&', $parts)) 
    ); 
} 

echo file_get_contents($file); 
+1

显然,这是不允许的谷歌,但希望他们不会通知:) https://developers.google.com/maps/faq#tos_staticmaps_reuse – guya 2013-04-07 18:32:54

5

你有exceeded the usage limits为特定的IP地址

“的谷歌静态地图API的使用受1000独特的(不同的)图像每个观众每天请求的查询限制”

0

我得到这个总是在黑莓上。不要认为它的使用限制,因为我刚醒来,我的访问总数= 1。除非它的一些共享的IP问题与黑莓相关。

+1

我很确定它与黑莓处理这些请求的方式有关。在其他设备上没有看到这个问题。 – 2011-11-18 20:26:42

3

我在各种无线运营商同样的问题。我相信这是因为有很多用户通过无线运营商使用的相同外部IP地址获得流量漏斗。 Google将这些视为一个请求源。

要解决问题,请确保您将Google API密钥附加到静态地图请求的末尾。例如:

http://maps.googleapis.com/maps/api/staticmap?center=<lat>,<lng>&zoom=17&markers=color:0059A9%7C<lat>,<lng>&size=576x174&sensor=false&key=YOUR_SUPER_LONG_GOOGLE_API_KEY_GOES_HERE