Javascript 在Openlayer中添加Google地图层。要求是什么?

Javascript 在Openlayer中添加Google地图层。要求是什么?,javascript,google-maps,maps,openlayers,Javascript,Google Maps,Maps,Openlayers,我从去年开始在我的应用程序中使用谷歌地图图层,突然它停止了工作。使用谷歌地图API需要密钥吗。?我的代码如下 map = new OpenLayers.Map('mapDiv'); map.addControl(new OpenLayers.Control.LayerSwitcher()); var gphy = new OpenLayers.Layer.Google( "Google Physical", {type: google.maps.MapTypeId.TERRAI

我从去年开始在我的应用程序中使用谷歌地图图层,突然它停止了工作。使用谷歌地图API需要密钥吗。?我的代码如下

map = new OpenLayers.Map('mapDiv');
map.addControl(new OpenLayers.Control.LayerSwitcher());

var gphy = new OpenLayers.Layer.Google(
    "Google Physical",
    {type: google.maps.MapTypeId.TERRAIN}
);
var gmap = new OpenLayers.Layer.Google(
    "Google Streets", // the default
    {numZoomLevels: 20}
);
var ghyb = new OpenLayers.Layer.Google(
    "Google Hybrid",
    {type: google.maps.MapTypeId.HYBRID, numZoomLevels: 20}
);
var gsat = new OpenLayers.Layer.Google(
    "Google Satellite",
    {type: google.maps.MapTypeId.SATELLITE, numZoomLevels: 22}
);

map.addLayers([gphy, gmap, ghyb, gsat]);

// Google.v3 uses EPSG:900913 as projection, so we have to
// transform our coordinates
map.setCenter(new OpenLayers.LonLat(10.2, 48.9).transform(
    new OpenLayers.Projection("EPSG:4326"),
    map.getProjectionObject()
), 5);

我已经插入了所有必要的脚本库。如果有一次我选择Google Satellite,然后尝试Google Streets或其他选项,而不是Maps在应用程序上加载

谷歌不断发布新版本的API,不推荐旧版本。从v3.21版开始,OpenLayers 2.13.1不再工作。如果你向谷歌申请3.21之前的版本,你仍然可以从谷歌获得最新版本

我会将上面提到的补丁挑选到我们自己的openlayers分支中:

这是带有上述更改的2.13.1标记和dist目录

我们使用bower,以下bower配置适用于我们:

{
    "dependencies": {
        "openlayers": "git://github.com/ums/openlayers.git#release-2.13.1_ums"
    },
    "overrides": {
        "openlayers": {
            "main": [
                "dist/OpenLayers.js",
                "theme/default/style.css",
                "theme/default/img/"
            ]
        }
    }
}
此处讨论了修复程序:-它还有一个指向我从中选择的修复程序的链接:


Google Maps Javascript API问题跟踪程序中的相关问题:

我们面临同样的问题。我也尝试过使用OpenLayers中的示例,所以谷歌似乎发生了一些变化。@Staale我在那里检查过,他们昨天没有修补任何东西。上一个版本是11月10日。@HiteshVaghani他们已经通知他们将在17日或之后不久做一些事情-如果这与否相关,或者已经做了改变,我不能说: