1

我有一個基於Python的Google App Engine構建的網站。其中一項功能是可以使用Google靜態地圖更新您的當前位置。 Python代碼負責生成靜態地圖的URL,而HTML模板只是簡單地將其放在適當位置。這是在圖像應該看起來像的空間:谷歌靜態地圖鏡頭出現在第

<tr> 
    <td colspan="4"><img border=0 src="{{img_url}}" /></td> 
</tr> 

...然後在這裏是如何生成圖像的URL:

self.template_values['img_url'] = "http://maps.google.com/staticmap?center=%s,%s&zoom=%s&size=%s&markers=%s,%s,midreda" % (str(rs['lat']), str(rs['lng']), str(rs['zoom']), str(MAP_SIZE[0])+"x"+str(MAP_SIZE[1]), str(rs['lat']), str(rs['lng'])) 

的RS []字典是從響應谷歌地圖搜索。這會產生一個完全有效的靜態地圖網址:

<tr> 
    <td colspan="4"><img border=0 src="http://maps.google.com/staticmap?center=52.955115,-1.149172&zoom=11&size=512x512&markers=52.955115,-1.149172,midreda" /></td> 
</tr> 

以上圖片的URL是「英國諾丁漢」搜索後。如果您訪問的地址,您可以看到它按預期顯示,正確的大小和一切。但是,在頁面上(您可以通過spare-wheels.appspot.com/searchlocation查看,儘管您需要連接您的Facebook帳戶才能使用它),但該圖片並未顯示出來。 HTML源代碼看起來很好:沒有明顯的編碼問題或類似的東西。我看不出有什麼問題。有任何想法嗎?

感謝

編輯:個位的測試之後我發現,地圖有時工作,但大部分時間他們不這樣做,而當他們的工作,他們通常停止工作刷新後

+1

圖像上的'border'屬性不再是有效的HTML,但是如果確實使用它,請將0值放在引號中。 – 2011-03-22 13:19:24

+0

這可能是由於缺少API密鑰。如果沒有使用API​​,請求將受限於沒有API密鑰的全局共享有限配額請求。有了一個,您將獲得每天25,000個免費請求,並且您可以對您的網址進行簽名以啓用對額外配額的結算。在Python中,您可以使用https://github.com/allrod5/staticmaps-signature來包含您的API密鑰和/或對您的URL進行簽名。 – 2017-09-29 18:11:43

回答

3

Google Maps API v1已棄用。有關免費靜態地圖使用不再需要API密鑰的通知可能僅適用於使用Google Maps API V2的應用程序。

包含您的引薦者的瀏覽器請求正被拒絕,因此爲什麼它會在瀏覽器上顯示破碎的圖標圖標。

切換到v2 URL或在URL中提供API密鑰。

Google提供了一個upgrade guide爲了您的方便。

正確V2的網址爲您的樣品網址是:

http://maps.google.com/maps/api/staticmap?center=52.955115,-1.149172&zoom=11&size=512x512&markers=size:mid|color:red|label:A|52.955115,-1.149172&sensor=false 

注意到這些變化:

  • 改變/staticmap? =>/maps/api/staticmap?
  • 新增sensor=false
  • 改變markers52.955115,-1.149172,midredasize:mid|color:red|label:A|52.955115,-1.149172

以上所有地圖都使用紅色標記正確顯示地圖,並應確保Google將您的請求識別爲V2請求。

+0

我經歷了升級指南,並將我的網址更改爲此樣式:但這只是讓標記消失。是否有可能由於某些原因API不接受來自我的應用程序的v2 URL? – benwad 2011-03-22 18:50:49

+0

切換到V3 IMO – kjy112 2011-03-22 18:54:48

+0

@ kjy112:我認爲您的意思是位於v3的Javascript Maps API。靜態地圖僅爲v2 AFAIK。 – MC78 2011-03-23 16:24:02