You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用googleVis的gvisMap部署网站地图时缺失API密钥报错求助

解决googleVis gvisMap部署网站时API密钥缺失的问题

你的问题根源在于Google Maps JavaScript API现在强制要求使用API密钥访问,而googleVis默认使用的旧版Google Loader(https://www.google.com/jsapi)已经被弃用,无法正确传递API密钥,导致部署到网站时触发权限报错。下面给你两种可行的解决方案:

方案1:修改googleVis生成的HTML代码,手动注入API密钥

因为googleVis的gvisMap没有直接支持API密钥的参数,我们需要手动修改生成的HTML内容,替换旧的加载脚本并添加密钥:

  1. 首先去Google Cloud控制台生成你的Google Maps JavaScript API密钥(启用Maps JavaScript API服务后创建密钥,记得设置合适的网站引用限制)。
  2. 然后修改你的R代码,替换HTML中的加载脚本:
example <- structure(list(id = c(1497L, 1509L, 1583L, 5572L, 7361L, 8102L, 8584L, 8734L, 9593L, 9614L), LatLong = c("-22.0267575:-44.3184877", "-22.6966783:-49.4322738", "-10.713746:-62.2545373", "-11.1369864:-42.1125701", "-9.9167727:-37.2763875", "-13.5779092:-39.2167652", "-5.7867453:-35.202613", "-22.017958:-44.5125127", "-4.8522095:-39.5748619", "-13.0786111:-39.0011556" )), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, -10L), .Names = c("id", "LatLong"))

library(googleVis)
mapa_tdp <- gvisMap(example, "LatLong" , options=list(showTip=TRUE, showLine=TRUE, enableScrollWheel=TRUE, mapType='terrain', useMapTypeControl=TRUE))

# 替换旧的Google Loader脚本为带API密钥的新脚本
YOUR_API_KEY <- "你的Google Maps API密钥"
new_script <- sprintf('<script async defer src="https://maps.googleapis.com/maps/api/js?key=%s"></script>', YOUR_API_KEY)
mapa_tdp$html$chart <- gsub('<script type="text/javascript" src="https://www.google.com/jsapi"></script>', new_script, mapa_tdp$html$chart)

# 移除旧的google.load调用(新API加载方式不需要这一步)
mapa_tdp$html$chart <- gsub("google.load\\('visualization', '1', {'packages':['map']}\\);", "", mapa_tdp$html$chart)

# 保存修改后的HTML
zz <- file(description="html_chart_mapa_obras.txt", open="w", encoding="UTF-8")
cat(mapa_tdp$html$chart, file=zz)
close(zz)

这样修改后的HTML就能正确加载Google Maps API并通过密钥验证,部署到网站后就不会再报错了。

方案2:改用更现代的R地图包(推荐)

googleVis的维护进度较慢,对于现代Google Maps API的支持不够友好。推荐使用googleway包,它原生支持API密钥,功能更强大:

library(googleway)

# 拆分LatLong列为单独的纬度和经度
example$lat <- as.numeric(sapply(strsplit(example$LatLong, ":"), `[`, 1))
example$lon <- as.numeric(sapply(strsplit(example$LatLong, ":"), `[`, 2))

# 设置你的Google Maps API密钥
set_key("你的Google Maps API密钥")

# 创建地形风格的地图,并添加标记
google_map(data = example, lat = "lat", lon = "lon") %>%
  add_markers() %>%
  map_style(style = map_style_terrain())

googleway生成的地图可以直接通过save_widget()函数保存为HTML,部署到网站时完全兼容现代API要求,不需要额外修改。


内容的提问来源于stack exchange,提问作者Manoel Galdino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:12:32