2015 年 2 月 10 日 Google Maps API v3 的更改打破了使用 R 中的 plotGoogleMaps 创建的现有地图?

Change in Google Maps API v3 on Feb 10, 2015 breaks existing maps created using plotGoogleMaps in R?

更新:2015 年 4 月 15 日: Google 考虑使最新的地图 API 向后兼容以解决此问题,但发布了 "won't fix"决定。

更新:2015 年 2 月 11 日: 相信这是 Google 地图 API 实验版更新引起的问题2015 年 2 月 10 日 3.19:https://developers.google.com/maps/documentation/javascript/3.exp/reference

已与地块所有者取得联系Google地图包 - 可以确认指定 v3.18 确实生成了可以正常工作的地图。

除非 v3.19 中的问题在成为 "release" 版本之前得到解决,否则由 plotGoogleMaps 创建的 all 先前地图将不再起作用正确。

原创 Post: 这个问题是针对 R 中 plotGoogleMaps 包的用户和 Google Maps API 支持团队。

2015 年 2 月 10 日之前使用上述 R 包创建的地图从今晚(东部时间)开始表现不同。具体来说,当您单击地图上的任何其他图钉时,将使用当您单击第一个地图图钉时出现的 "info box"。

取自 Milan Kilibarda 教程的可重现 R 代码示例(此处:http://cran.r-project.org/web/packages/plotGoogleMaps/vignettes/plotGoogleMaps-tutorial.pdf)。

data(meuse)
coordinates(meuse)<-~x+y 
# convert to SPDF 
proj4string(meuse) <- CRS('+init=epsg:28992') 
# adding Coordinate Referent Sys.
# Create web map of Point data 
m<-plotGoogleMaps(meuse,filename='myMap1.htm')

当您单击地图图钉时,打开的信息框将与为其他所有地图图钉打开的信息框相同。几个月前由 plotGoogleMaps 创建的 Htm 地图文件现在表现出同样的行为,所以我认为这是 Google Maps API 服务更改的结果。

教程中另一个曾经有效的示例是使用以下 R 代码绘制 SpatialPolygonsDataFrame:

require(plotGoogleMaps)
require(maptools)
require(RColorBrewer)
nc <- readShapeSpatial(system.file("shapes/sids.shp",package="maptools")[1],
                       proj4string=CRS("+proj=longlat +datum=NAD27"))
m<-plotGoogleMaps(nc,zcol="NWBIR74",filename='MyMap6.htm',
                  mapTypeId='TERRAIN',
                  colPalette= brewer.pal(7,"Reds"), strokeColor="white")

当您单击一个多边形时,信息框会在左上角打开(它应该在注册点击的位置打开)并且当您单击不同的多边形时它不会改变。顺便说一句,在过去,虽然信息框会在左上角打开,但最终会在点击 3 次后移动到点击点。到今天为止,信息框的内容没有改变。

可以通过使用 plotGoogleMaps 加载以前创建的 Google 地图来观察此行为,而不仅仅是今天创建的地图。

我认为上述问题是由 Google 端的更改引起的(因为以前创建的地图现在表现出相同的行为)。我已经在使用不同浏览器(Safari 7.1.3、Firefox 34.0.5、Chrome 40.0.2214.111)的 Mac 和使用 IE 10.0.9200.17183 的 PC 上进行了测试,结果相同。

我正在使用 R 3.1.2 和最新版本的 plotGoogleMaps。

如果 Google 地图团队的任何人读到这篇文章,请您验证是否是您这边的更新导致了此问题,如果是,我们什么时候可以修复?

提前致谢。

Google 开发人员使用 API 更改了某些内容,InfoWindows 现在无法使用 plotGooogleMaps 代码正常工作。这个问题可以通过两种方式解决:

1) 从 R-forge 安装新版本 (2.2) 的软件包(推荐,我希望它很快就会出现在 CRAN 上)

install.packages("plotGoogleMaps",repos="http://r-forge.r-project.org")

2) 如果使用 plotGoogleMaps 2.1。更改函数中的 api link 例如,如果您使用 CRAN 版本,请将 api 参数设置为版本 3.18。

# Data preparation
# Point data
data(meuse)
coordinates(meuse)<-~x+y 
# convert to SPDF 
proj4string(meuse) <- CRS('+init=epsg:28992') 
# adding Coordinate Referent Sys.
# Create web map of Point data 
m<-plotGoogleMaps(meuse , api="https://maps.google.com/maps/api/js?sensor=false&v=3.18")

只有在 .html (.htm) 文件中替换 api 才能解决 2014/02/10 之前制作的现有地图的问题。您应该替换行

<script type="text/javascript" src="https://maps.google.com/maps/api/js?sensor=false"> </script>

<script type="text/javascript" src="https://maps.google.com/maps/api/js?sensor=false&v=3.18"</script>

希望对您有所帮助。

2015 年 5 月新刊。 这个旧的 api 不再起作用了。所以,如果你用新版本复制地图你不会有问题,但如果你需要使用旧地图你应该替换这些行:

infowindow.setContent(替换-infowindow.content=

替换 - infowindow.position =event.latLng; WITH - ); infowindow.setPosition(event.latLng);