谷歌静态地图镜头出现在第

问题描述:

我有一个基于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

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