关于Leaflet打印地图的三种方法

前两天在实现“地图打印”功能时发现网上有很多博主推荐了好几种插件,于是本人就挨个试了一遍,今天就其中比较“热门”的三款在这里简单整理一下,如有疏漏欢迎补充。

一、leaflet.bigimage

地址:leaflet.bigimage - npm

 leaflet.bigimage的特点是很轻巧,因此其交互性也就较差,引入后仅需用户点击对应控件浏览器即可输出对应png格式的图片。

//npm i leaflet.bigimage

//引入
import { BigImage } from "leaflet.bigimage";
import "leaflet.bigimage/src/Leaflet.BigImage.css";

let LFBigImage= L.control.BigImage({
  position: "bottomright",//控件位置
  title: "出图",//控制按钮提示文本
  maxScale: 10,//最大图像比例
  minScale: 1,//最小图像比例
  inputTitle:"级别",//比例输入前的标题
  downloadTitle:"输出",//输出按钮的提示文本
});

LFBigImage.addTo(map);

本人在使用过程中发现该插件能够自动隐藏页面除地图外的所有DOM结构,但是好像无法输出多图层(虽然文档上说有一个版本更新后支持多图层导出,不知道是不是我图层数据的原因,本人使用的是Supermap iServer发布的图层),另外该插件输出地图的时间受输出级别影响很大,低级别的几秒钟即可输出,高级别的可能需要很久(点击“Download”后控件内就会有一个圆圈处于加载状态,刚开始十几分钟都在加载我以为是卡死了,但是后来发现的确是在输出,最后输出的图片可能会有几百兆)

二、leaflet-easyprint

地址:leaflet-easyprint - npm

 leaflet-easyprint个人认为其功能、交互性,使用便捷程度等都比较适中,功能整体够用同时代码也不会很复杂,可以通过配置一些Options即可实现较为丰富的功能。

//npm i leaflet-easyprint

//引入
import { easyPrint } from "leaflet-easyprint";

let LFeasyPrint = L.easyPrint({
  title: "地图打印",
  position: "bottomright",
  sizeModes: ["Current", "A4Portrait", "A4Landscape"], //输出大小模式
  defaultSizeTitles: {
    Current: "当前显示尺寸",
    A4Landscape: "A4横向",
    A4Portrait: "A4纵向",
  }, //输出模式按钮提示文本
  exportOnly: false, //是否自动输出png(导出选项)
  filename: "leaflet地图", //仅导出选项设置为true时的文件名
  hidden: false, //界面是否隐藏控件(自定义控件时使用)
  hideControlContainer: true, //出图是否隐藏控件
  hideClasses: ["hidePrint", "hidePrint2", "hidePrint3"], //需要隐藏页面中的DOM结构的类名
  customWindowTitle: "地图标题", //将添加打印纸张的打印窗口的标题(当exportOnly设置为false时地图打印页面的标题)
  spinnerBgColor: "#0DC5C1", //微调器背景色的有效css颜色(当exportOnly设置为false时打开的打印页面的背景颜色)
});
LFeasyPrint.addTo(map);

//给需要在地图上隐藏的DOM结构添加类名
onMounted(() => {
  printDOM1.classList.add("hidePrint"); // 添加一个或多个类名
  printDOM2.classList.add("hidePrint2"); // 添加一个或多个类名
  printDOM3.classList.add("hidePrint3"); // 添加一个或多个类名
});

该插件支持多图层导出,同时可以选择性的将页面中一些DOM结构导出到地图中,也可以通过设置exportOnly的值,从而实现直接导出为png或展示打印页面由用户自己选择并打印。

效果图(exportOnly:false):

三、leaflet.browser.print

地址:leaflet.browser.print - npm

该插件有很强的交互性,支持用户自定义划取范围导出地图,同时还支持用户自定义导出模式,功能十分丰富,但是好像需要指定导出图层的URL(目前还没研究特别明白就不做详细介绍,以防误人子弟)

leaflet.browser.print插件在线演示

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值