1

我有一个基于 Python 的 Google App Engine 构建的网站。其中一项功能是能够使用谷歌静态地图来更新您当前的位置。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[] 字典是来自谷歌地图搜索的响应。这会生成一个完全有效的静态地图 URL:

<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 源代码看起来不错:没有明显的编码问题或类似问题。我看不出出了什么问题。有任何想法吗?

谢谢

编辑:经过一些测试,我发现地图有时可以工作,但大多数时候不能,而且当它们工作时,它们通常会在刷新后停止工作

4

1 回答 1

3

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

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

切换到 v2 URL,或在 url 中提供 API 密钥。

为了您的方便,Google 提供了升级指南。

示例 URL 的正确 v2 URL 是:

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
  • markers从更改52.955115,-1.149172,midredasize:mid|color:red|label:A|52.955115,-1.149172

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

于 2011-03-22T15:17:03.130 回答