在 Openlayer 中添加 Google 地图图层。有什么要求?
Adding Google map layer in Openlayer. What is the requirement?
我从一年开始就在我的应用程序中使用 google 地图层,但突然它停止工作了。使用 google 地图 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);
我已经插入了所有必要的脚本库。如果一旦我 select Google 卫星然后尝试 Google 街道或 地图 以外的其他选项,请在应用程序上加载。
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 目录。
我们使用 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/"
]
}
}
}
此处讨论修复:https://github.com/openlayers/openlayers/issues/1450 - which also has a link to the fix that I cherry-picked from: https://github.com/v5analytics/openlayers/commit/5c6a7f4540b7d70261e9483d3a3770cfbfc72001
Google 地图 Javascript API 问题跟踪器中的相关问题:Issue 8092: Bug: Map tiles not showing on page load with OpenLayers
我从一年开始就在我的应用程序中使用 google 地图层,但突然它停止工作了。使用 google 地图 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);
我已经插入了所有必要的脚本库。如果一旦我 select Google 卫星然后尝试 Google 街道或 地图 以外的其他选项,请在应用程序上加载。
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 目录。
我们使用 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/"
]
}
}
}
此处讨论修复:https://github.com/openlayers/openlayers/issues/1450 - which also has a link to the fix that I cherry-picked from: https://github.com/v5analytics/openlayers/commit/5c6a7f4540b7d70261e9483d3a3770cfbfc72001
Google 地图 Javascript API 问题跟踪器中的相关问题:Issue 8092: Bug: Map tiles not showing on page load with OpenLayers