带有 Google 地图的 OpenLayers 2.13.1

OpenLayers 2.13.1 with Google maps

当我从 OpenLayers 2.12 切换到 2.13.1 时,所有 Google 地图图层都停止工作。当我使用图层切换器时,地图区域会变成白色。

我在任何时候都没有在浏览器的开发控制台中看到任何错误消息,并且所有文件都已成功加载。

我正在创建这样的图层:

var layerGoogleMapsNormal    = new OpenLayers.Layer.Google("Google Normal"   , { type : google.maps.MapTypeId.ROADMAP, sphericalMercator : true });
var layerGoogleMapsPhysical  = new OpenLayers.Layer.Google("Google Physical" , { type : google.maps.MapTypeId.TERRAIN, sphericalMercator : true });

其他层(OSM、WMS)工作正常。

在写这篇文章的时候,我发现 OpenLayers 的例子也不能正常工作。

http://dev.openlayers.org/examples/google.html

难道是Google做了一个突破性的改动? 有没有人遇到同样的问题,有谁知道解决方案吗?

评论: 我看过 OpenLayers3,但它的 API 是如此不同,我认为我们永远无法将所有代码移植到它。我们无法说服我们的客户支付重写所有映射内容以使用 OL3 的费用,所以我猜这个项目永远停留在 2.x 分支上......

我遇到了和你一样的问题。 在包含来自 Google 的 js 文件的 link 中,您必须告诉它在 9 月 15 日的重大更改之前向您发送旧版本

示例:

正常 link: <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&sensor=false"></script>

解决方案link:<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&sensor=false&v=3.20"></script>

目前最新版本是3.22。最适合我的是 3.20,与你的 Openlayers 版本相同。

有关该主题的更多信息: https://developers.google.com/maps/documentation/javascript/versions

稍后编辑:如评论所述,此修复程序不再有效。在 github 问题线程中,有人修复了补丁,但我找不到可以直接下载的文件,所以我不得不手动将修复应用到我的项目中。为了避免其他人做同样的事情,我将在此处放置一个 link 包含修复程序的缩小版本。

下载: OpenLayers 2.13.1 with google fix

接受的答案现在不再有效,因为正如@geocodezip 提到的,v3.20 现已被 Google 淘汰。为了使 OpenLayers 2.13.x 与 Google 地图 API 的当前版本一起工作,您必须按照 this comment 中指定的方式修补 OpenLayers.js 文件OpenLayers 问题 #1450。