我正在使用mapboxGL在网页上呈现地图,我想将地图导出为包括在地图上绘制的GeoJSON数据的图像。
我尝试使用Leaflet插件,但是它不呈现群集和其他自定义html,后者在地图上显示为弹出窗口或注释。

即使我尝试在服务器上执行此操作,例如使用phantomjs,但它(phantomjs)也不支持webgl。
卡住了,不知道该怎么办,有什么建议吗?

最佳答案

MpboxGL可以非常容易地导出!您添加到地图的所有内容都是可导出的,这真的很棒。

在地图声明中,确保将preserveDrawingBuffer设置为true

var map = new mapboxgl.Map({
  container: 'map',
  style: myawesomestyle,
  zoom: 8,
  bearing: 0,
  pitch: 0,
  center: [13, 52.35],
  preserveDrawingBuffer: true
});


我喜欢使用CanvasToBlob和FileSaver来执行内部步骤,因此在文档头中包括两个库:

<script type="text/javascript" src="//cdn.jsdelivr.net/canvas-toblob/0.1/canvas-toBlob.min.js"></script>
<script type="text/javascript" src="//cdn.rawgit.com/eligrey/FileSaver.js/1.3.3/FileSaver.min.js"></script>


并结合一点打印功能

function printMap() {
  map.getCanvas().toBlob(function (blob) {
    saveAs(blob, 'map.png');
  })
}

07-24 14:49