2017-07-31 237 views
0

该示例显示如何将按钮单击事件绑定到画布,然后返回图像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> 

回答

0

您不能添加一个链接,会以某种方式下载地图为图像。你需要将它渲染到某个地方。

这是如何工作的。当Openlayers呈现地图时,它会将其呈现在HTML画布元素中。下载功能不是Openlayers功能,而是HTML画布功能。该画布具有API以拍摄当前画布的快照。你可以下载它作为一个图像。

您既可以在浏览器中呈现地图,也可以在服务器端呈现地图。我没有尝试渲染服务器上的Openlayers地图,但它应该是可能的。