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

时间:2015-11-18 07:50:44

标签: 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.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或地图之外的其他选项,请在应用程序上加载。

1 个答案:

答案 0 :(得分:4)

Google不断发布其新版API,不推荐旧版本。从版本v3.21开始,OpenLayers 2.13.1不再有效。如果您要求Google提供早于3.21的版本,您仍会从Google获得最新版本。

我将上面提到的补丁挑选到我们自己的openlayers分支中:https://github.com/UMS/openlayers/tree/release-2.13.1_ums

这是带有上述更改的2.13.1标记,以及dist目录。

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

{
    "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/"
            ]
        }
    }
}

此处讨论了此修复程序:https://github.com/openlayers/openlayers/issues/1450 - 其中还包含指向我所选择的修补程序的链接:https://github.com/v5analytics/openlayers/commit/5c6a7f4540b7d70261e9483d3a3770cfbfc72001

Google Maps Javascript API问题跟踪器中的相关问题:Issue 8092: Bug: Map tiles not showing on page load with OpenLayers