leaflet地图全图以及框选截图导出功能(附源码下载)

前言

leaflet 入门开发系列环境知识点了解:

内容概览

leaflet地图截图导出功能
源代码demo下载

效果图如下:

本篇主要参考截图插件domtoimage:https://github.com/tsayen/dom-to-image
地图全图导出直接用上面的domtoimage插件,然后矩形框选截图导出也是在domtoimage插件基础上自己计算矩形范围来实现的

  • 部分代码,完整的见源码demo下载
<script>
 var geojsonLayer = null;
 var map = L.map(‘map‘);
  L.tileLayer(‘http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetPurplishBlue/MapServer/tile/{z}/{y}/{x}‘,{crossOrigin:true}).addTo(map); 

  map.setView(L.latLng(22.95186415, 113.90271877), 14);  //设置缩放级别及中心点 

  map.pm.addControls({
 position: ‘topleft‘,
 drawCircle: false,
 drawMarker:false,
 drawCircleMarker:false,
 drawPolyline:false,
 drawRectangle:false,
 drawPolygon:false,
 cutPolygon:false,
 removalMode:false,
 editMode:false,
 dragMode:false
  });
 //参考截图插件:https://github.com/tsayen/dom-to-image
 var node = document.getElementById(‘map‘);
  $("#mapexport_btn").click(function(){
      domtoimage.toJpeg(node, { quality: 1.0 })
        .then(function (dataUrl) {
 var link = document.createElement(‘a‘);
            link.download = ‘全图导出.jpeg‘;
            link.href = dataUrl;
            link.click();
        });
  });
  $("#rctanglexport_btn").click(function(){
 //绘制矩形
      map.pm.enableDraw("Rectangle", {
 finishOn: "dblclick",
 allowSelfIntersection: false,
 tooltips: false
      });
  });
  map.on(‘pm:create‘, e => {
 //console.log(e);
    geojsonLayer = e.layer;
    geojsonLayer.addTo(map); 

 var northEast =  e.layer.getBounds()._northEast;
 var southWest =  e.layer.getBounds()._southWest;
 //框选矩形的中心点
 var centerPoint = L.latLng(
          (northEast.lat + southWest.lat) / 2.0,
          (northEast.lng + southWest.lng) / 2.0
    );
 //地理坐标转换屏幕坐标
 var northEastPoint = map.latLngToContainerPoint(northEast);
 var southWestPoint = map.latLngToContainerPoint(southWest);
 ……
 ……

 if(geojsonLayer){
         map.removeLayer(geojsonLayer);
         geojsonLayer = null;
    }
    domtoimage
          .toPng(node)
          .then(function(dataUrl) {
 if (dataUrl.length <= 6) {
 console.log("屏幕截图结果为空,建议放大地图,重新截图操作试试看");
 return;
            }
 //过渡img图片,为了截取img指定位置的截图需要
 var img = new Image();
            img.src = dataUrl;
            img.onload = function() {
               ……
               ……
            };
          })
          .catch(function(error) {
 console.error("oops, something went wrong!", error);
          });
  });
</script> 

完整demo源码见小专栏文章尾部小专栏

文章尾部提供源代码下载,对本专栏感兴趣的话,可以关注一波

原文地址:https://www.cnblogs.com/giserhome/p/12590932.html

时间: 2024-10-10 09:50:32

leaflet地图全图以及框选截图导出功能(附源码下载)的相关文章

leaflet结合geoserver利用WFS服务实现图层删除功能(附源码下载)

前言 leaflet 入门开发系列环境知识点了解: leaflet api文档介绍,详细介绍 leaflet 每个类的函数以及属性等等 leaflet 在线例子 leaflet 插件,leaflet 的插件库,非常有用 内容概览 leaflet结合geoserver利用WFS服务实现图层删除源代码demo下载 效果图如下: 本篇主要是在上一篇leaflet结合geoserver利用WFS服务实现图层新增功能(附源码下载)基础上实现的,leaflet通过调用geoserver发布的地图服务WFS来

leaflet结合geoserver利用WFS服务实现图层新增功能(附源码下载)

前言 leaflet 入门开发系列环境知识点了解: leaflet api文档介绍,详细介绍 leaflet 每个类的函数以及属性等等 leaflet 在线例子 leaflet 插件,leaflet 的插件库,非常有用 内容概览 leaflet结合geoserver利用WFS服务实现图层新增源代码demo下载 效果图如下: 本篇主要是leaflet通过调用geoserver发布的地图服务WFS来达到图层新增记录的目的.与GeoServer的WFS进行基于Rest交互关键就在于请求参数,值得注意的

c#使用NPOI进行Excel导入导出,附源码,vs2010

目录 1. 介绍:描述第三方类库NPOI以及Excel结构 2. Excel导入:介绍C#如何调用NPOI进行Excel导入,包含:流程图.NOPI以及C#代码 3. Excel导出:介绍C#如何调用NPOI进行Excel导出,包含:流程图.NOPI以.C#代码以及代码分析 4. 源码下载:展示运行图及源码下载 1. 介绍 1.1 第三方类库:NPOI 说明:NPOI是POI项目的.NET 版本,可用于Excel.Word的读写操作. 优点:不用装Office环境. 下载地址:http://np

leaflet-webpack 入门开发系列五地图卷帘(附源码下载)

前言 leaflet-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载地址 webpack 配置介绍文档详细的 webpack 文档配置介绍,适合新手查看,我也是边看边学 vscode 安装包下载,我这边用 vscode工具编译开发前端项目,个人觉的这款工具还不错 leaflet api文档介绍,详细介绍 leaflet 每个类的函数以及属性等等 leaflet 在线例子 l

cesium结合geoserver实现地图空间查询(附源码下载)

前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材. 内容概览 1.cesium 结合 geoserver 实现地图空间查询2.源代码 demo 下载 效果图如下: 实现思路:首先利用 geoserver 发布的图斑 WFS 服务,通过 url 的 rest 请求,构造空间查询形式,获取 geojson 数据源:然后调用cesium api 的 Cesi

leaflet实现风场图(附源码下载)

前言 leaflet 入门开发系列环境知识点了解: leaflet api文档介绍,详细介绍 leaflet 每个类的函数以及属性等等 leaflet 在线例子 leaflet 插件,leaflet 的插件库,非常有用 内容概览 leaflet 实现风场图源代码 demo 下载 实现效果图如下: html 页面引用资源 <!doctype html> <html> <head> <title>Leaflet风场图</title> <meta

Qt5.10实现QQ截图工具功能代码源码分析

为了做出一个QQ截图功能的模块,参考了网上某位网友的代码.这里我们分析一下主要代码.源码已经过测试运行,不懂的留言即可.源码地址:Qtjietu20191216.zip1.首先我们一定会想到要对鼠标事件进行改写,包括点击,移动,释放,双击取消选区等功能. ```//重写基类方法 void keyPressEvent(QKeyEvent *event); void paintEvent(QPaintEvent *event); void mousePressEvent(QMouseEvent *e

C#开发的高性能EXCEL导入、导出工具DataPie(支持MSSQL、ORACLE、ACCESS,附源码下载地址)[转]

转自:http://www.cnblogs.com/yfl8910/archive/2012/05/19/2509194.html 作为财务数据核算人员,面对大量的业务与财务数据,借助于传统的EXCEL表格,已经力不从心.最近几个月,利用周末及下班的空闲时间,写了一个数据库导入导出工具,以方便业务逻辑密集型的数据处理.目前,DataPie支持百万级别的数据导出,对于几十万的数据导入,也轻松应付. 源码及安装包下载地址:https://github.com/yfl8910/DataPie 先看看界

leaflet 结合 d3.js 实现 geojson 数据地形剖面分析(附源码下载)

前言 leaflet 入门开发系列环境知识点了解: leaflet api文档介绍,详细介绍 leaflet 每个类的函数以及属性等等 leaflet 在线例子 leaflet 插件,leaflet 的插件库,非常有用 内容概览 leaflet 实现地形剖面分析源代码 demo 下载 本篇 demo 利用 leaflet api 实现地形剖面分析,效果图如下: 完整demo源码见小专栏文章尾部:GIS之家leaflet小专栏 文章尾部提供源代码下载,对本专栏感兴趣的话,可以关注一波 原文地址:h