从img标记加载时,Google静态地图API禁止403

时间:2011-03-01 12:37:31

标签: image api google-maps static

我所拥有的是一张显示酒店位置的Google地图,但是当我打印动态地图时打印得不那么好,所以我决定实施Google静态地图图片API。

http://lpoc.co.uk/properties-for-sale/property/oldgate-dairy-st-james-road-long-sutton-cambridgeshire-pe12/?prop-print=1

^^是打印视图中属性的一个示例,应该显示静态地图图像,但无法加载并查看我的检查器我正在为图像获取403 Forbiden响应。

但如果我直接转到网址,图片会加载......

我做错了什么?

由于

斯科特

11 个答案:

答案 0 :(得分:17)

这已经获得了很多观点,所以我在这里添加我的问题解决方案:

使用新API时,请确保为浏览器应用生成密钥(包含引用者),并确保模式与您的网址匹配。

E.g。从 example.com 请求时,您的模式应为

  example.com/*

当您从 www.example.com

请求时
  *.example.com/*

因此,请确保在开发者控制台中检查子域是否存在且允许两种模式

  1. 访问Developer Console
  2. 在API密钥下,单击铅笔图标进行编辑。
  3. 在“密钥限制”下,确保您拥有example.com/**.example.com/*以及您可能需要的任何本地测试域的条目。

答案 1 :(得分:14)

这里似乎有些混乱,因为这个帖子在Google上排名很高,所以澄清一下似乎很有用。

Google有几种不同的API用于他们的地图服务:

Javascript API

此API的旧版本是版本2,需要密钥。不推荐使用此版本,建议升级到较新版本version 3。请注意,除非您使用“Google Maps API for Business”,否则文档仍指出您需要一个密钥才能运行此功能。

Static Maps API

这是一个完全不同的故事。静态地图是一种不需要任何JavaScript的服务。您只需拨打网址,Google就会返回地图图片,从而可以将网址直接插入您的<img>标记中。 最新版本为version 2这需要密钥才能生效,因为应用了使用限制。

可以在此处申请密钥: https://code.google.com/apis/console

并且应该将密钥添加到要生成正确图像的请求中:

http://maps.googleapis.com/maps/api/staticmap?center=New+York,NY&zoom=13&size=600x300&key=API_console_key

我希望这可以解决一些困惑。

答案 2 :(得分:4)

我有同样的问题,但我的解决方案不同。我启用了V2 maps api,但没有静态地图api(我认为这是V2)。我启用了静态地图api并且它工作正常。

答案 3 :(得分:3)

哎呀我觉得自己像个白痴。我使用旧的V2 maps API URL而不是新的V3 API URL。我得到了403,因为我在没有提供API密钥的情况下使用V2 URL :(

答案 4 :(得分:3)

百分之百确定这些要点:(对于静态地图)

  1. 在此网址启用您的项目:
  2. https://console.developers.google.com/apis/api/static_maps_backend/overview?project=

    1. 您有本地主机,暂存和生产 - 在引荐来源部分中启用了通配符的所有网址。

    2. Google已更改其政策,您现在需要一个api密钥才能显示地图。请参阅此内容以获取更多信息:Google Maps API without key?

    3. 希望它有所帮助。

答案 5 :(得分:2)

Staticmaps V3不需要“Key”属性,删除它似乎解决了<img>源问题。

尝试使用以下网址:

http://maps.googleapis.com/maps/api/staticmap?center=0.0000,0.0000&zoom=13&size=200x200&maptype=roadmap&markers=0.0000,0.0000&sensor=false

了解更多信息read this

答案 6 :(得分:1)

是的,Google Maps API版本3是java脚本版本; “谷歌静态地图”最新版本为2.0。我怀疑使用可能会有一些限制。

答案 7 :(得分:1)

我也无法显示静态地图,并且可能会在浏览器的网络控制台中看到403错误。

http响应标头:

status:403
x-content-type-options:nosniff

我有一个API密钥,其中启用了许多Google Maps API,但Google Static Maps API丢失了,因此无法解决问题。

答案 8 :(得分:1)

现在您应该使用'signature'参数,您应该将其添加到请求中 - 否则静态地图将无效。 这里有一些有用的链接

1)how to generate signature

2)how to make signature on BE side (code snippet)

答案 9 :(得分:0)

我正在使用WordPress 4.9.4与ChurchThemes Exodus Theme。我申请了&amp;生成了一个新的API_KEY。

完成后,您的地图应该会开始显示在您的网站或应用上。

如果他们没有出现在刷新状态,您可能需要:

  • 清除缓存(Wordpress或Drupal webistes),
  • 等待5分钟建议API注册启用的API

答案 10 :(得分:0)

尝试在此Google Cloud Project / Firebase项目上启用计费。

我也遇到了同样的问题,只是在控制台中收到了403 error。 将静态地图URL复制并粘贴到URL栏中并加载它时,显示以下错误消息:

The Google Maps Platform server rejected your request. You must enable Billing on the Google Cloud Project at 
https://console.cloud.google.com/project/_/billing/enable Learn more at https://developers.google.com/maps/gmp-get-started

希望这会有所帮助!