谷歌静态地图拍摄出现在页面上

时间:2011-03-22 13:17:06

标签: html image google-app-engine url-encoding google-static-maps

我有一个基于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 [] dict是谷歌地图搜索的回复。这会生成一个完全有效的静态地图网址:

<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>

上面的图片网址是在搜索“英国诺丁汉”之后。如果您访问该地址,您可以看到它按预期显示,正确的大小和一切。但是,在页面上(您可以在spare -wheels.appspot.com/searchlocation上查看,虽然您需要连接您的Facebook帐户才能使用它),但图像不会显示。 HTML源代码看起来很好:没有明显的编码问题或类似的东西。我看不出有什么问题。有什么想法吗?

由于

编辑:经过一些测试后,我发现地图有时有效,但大部分时间没有,当他们工作时,他们通常会在刷新后停止工作

1 个答案:

答案 0 :(得分:3)

不推荐使用Google Maps API v1。关于免费静态地图使用不再需要API密钥的通知可能仅对使用Google Maps API V2的应用程序有效。

包含您的引用者的浏览器请求被403拒绝。因此,为什么它会在您的浏览器上显示损坏的图像图标。

切换到v2网址,或在网址中提供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? =&gt; /maps/api/staticmap?
  • 已添加sensor=false
  • markers52.955115,-1.149172,midreda更改为size:mid|color:red|label:A|52.955115,-1.149172

使用上述所有内容,我会使用红色标记正确显示地图,并确保Google将您的请求识别为V2请求。