2011-04-07 75 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