在openlayers中返回canvas(图片)4
问题描述:
该示例显示如何将按钮单击事件绑定到画布,然后返回图像Example。我怎样才能改变它,当我用永久链接调用openlayers时,它会自动将该图像返回给我?我想使用一个简单的从C++程序获取请求来获取图像。我有 例如“#map = 12/1085115.28/6035092.46/0”作为解析参数。有任何想法吗? 感谢和问候 梅丽娜在openlayers中返回canvas(图片)4
到目前为止,我有参数解析
<!DOCTYPE html>
<html>
<head>
<title>OpenStreetMap</title>
<link rel="stylesheet" href="https://openlayers.org/en/v4.2.0/css/ol.css" type="text/css">
<!-- The line below is only needed for old environments like Internet Explorer and Android 4.x -->
<script src="https://cdn.polyfill.io/v2/polyfill.min.js?features=requestAnimationFrame,Element.prototype.classList,URL"></script>
<script src="https://openlayers.org/en/v4.2.0/build/ol.js"></script>
</head>
<body>
<div id="map" class="map"></div>
<script>
var center = [0,0];
var zoom = 0;
var rotation = 0;
if (window.location.has !== '')
{
var hash = window.location.hash.replace('#map=', '');
var parts = hash.split('/');
console.log (parts);
if (parts.length === 4)
{
zoom = parseInt(parts[0],10);
center = [
parseFloat(parts[1]),
parseFloat(parts[2])
];
rotation = parseFloat(parts[3]);
var rotation = 0;
}
}
var openStreetMapLayer = new ol.layer.Tile({
source: new ol.source.OSM({
attributions: [
'All maps © <a href="http://www.openstreetmap.org">openStreetMapLayer</a>',
ol.source.OSM.ATTRIBUTION
],
opaque: false,
// url: '<myosmserver>/hot/{z}/{x}/{y}.png'
})
});
var map = new ol.Map({
layers: [
openStreetMapLayer
],
target: 'map',
controls: ol.control.defaults({
attributionOptions: /** @type {olx.control.AttributionOptions} */ ({
collapsible: false
})
}),
view: new ol.View({
maxZoom: 20,
center: center,
zoom: zoom
})
});
</script>
</body>
</html>
答
您不能添加一个链接,会以某种方式下载地图为图像。你需要将它渲染到某个地方。
这是如何工作的。当Openlayers呈现地图时,它会将其呈现在HTML画布元素中。下载功能不是Openlayers功能,而是HTML画布功能。该画布具有API以拍摄当前画布的快照。你可以下载它作为一个图像。
您既可以在浏览器中呈现地图,也可以在服务器端呈现地图。我没有尝试渲染服务器上的Openlayers地图,但它应该是可能的。