PAYATHON 2026

能否为 Google Maps JavaScript API 和 Static Maps API 使用同一 API_KE

支付小周

结论

可以。只要同一个 Google Cloud 项目启用了 Maps JavaScript API 和 Maps Static API,一个 API_KEY 就能调用这两个 API。API Key 本身并不限定只能用于某一种 Maps API。

不过,生产环境通常更适合分别创建两个 Key。两种 API 的调用方式不同,适用的应用限制也不同:

  • Maps JavaScript API:Key 会出现在浏览器端,通常配置 HTTP referrer(网站)限制
  • Maps Static API:如果请求由后端生成,通常配置 IP 地址限制,并配合 URL 签名

配置步骤

1. 启用所需 API

在 Google Cloud Console 中选择对应项目,然后启用:

  • Maps JavaScript API
  • Maps Static API

生产环境还需要为项目关联有效的结算账号。免费额度、计费方式和 SKU 可能发生调整,请以当前 Google Maps Platform 官方计费页面为准。

2. 配置 API 限制

如果确实需要共用一个 Key,请在该 Key 的 API restrictions 中选择 限制密钥,并同时允许:

  • Maps JavaScript API
  • Maps Static API

如果只允许其中一个,另一个 API 的请求会因权限限制而失败。

3. 配置应用限制

共用 Key 时,应用限制是最容易出现问题的部分。一个 Key 只能采用一种主要的应用限制类型,而浏览器端和服务端通常需要不同的限制策略。

如果两个 API 都由网页直接请求,可以为 Key 配置允许访问的 HTTP referrer,例如:

https://example.com/*
https://www.example.com/*

如果 Static Maps 请求由服务器发起,更稳妥的方案是拆分 Key:

Browser key:
  Application restriction: HTTP referrers
  API restriction: Maps JavaScript API

Server key:
  Application restriction: IP addresses
  API restriction: Maps Static API

拆分后可以缩小 Key 泄露的影响范围,也更方便分别监控和轮换密钥,以及排查配额问题。

调用示例

Maps JavaScript API

<script
  async
  src="https://maps.googleapis.com/maps/api/js?key=YOUR_BROWSER_API_KEY&callback=initMap">
</script>
function initMap() {
  const map = new google.maps.Map(document.getElementById("map"), {
    center: { lat: 31.2304, lng: 121.4737 },
    zoom: 12
  });
}

Maps Static API

<img
  src="https://maps.googleapis.com/maps/api/staticmap?center=31.2304,121.4737&zoom=12&size=600x400&key=YOUR_STATIC_MAPS_API_KEY"
  alt="Static map">

如果决定共用 Key,把两个示例中的 Key 替换成同一个值即可。这个 Key 必须同时获得两个 API 的调用权限。

注意事项

  • 不要因为 Key 会出现在前端代码或 URL 中,就取消所有限制。API Key 通常不是传统意义上的密码,但仍需配置应用限制和 API 限制。
  • Maps Static API 的 URL 可能出现在 HTML、浏览器历史记录、访问日志或代理日志中,应避免记录不必要的完整请求地址。
  • 如果 Static Maps 请求由可信后端生成,建议使用独立 Key,并按照当前官方方案配置数字签名。
  • 共用 Key 时,项目账单仍可按不同 API 或 SKU 区分,但密钥轮换、异常流量定位和权限隔离会更困难。
  • Standard plan 是较早期的产品表述。生产环境的实际配置应以当前 Google Maps Platform 的项目、Billing Account、API 配额和 SKU 规则为准。

功能上,Maps JavaScript API 和 Maps Static API 可以共用一个 API_KEY。考虑到生产环境的安全和运维需求,通常应为两种 API 分别创建 Key,并配置相应限制。

备注:内容仅供参考。