前言

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

  • leaflet api文档介绍,详细介绍 leaflet 每个类的函数以及属性等等
  • leaflet 在线例子
  • leaflet 插件,leaflet 的插件库,非常有用

内容概览

leaflet地图截图批量导出
源代码demo下载

效果图如下:

具体实现思路:
打开csv文件,读取点数据源经纬度,循环遍历数据源,以经纬度为中心,构造1000*1000屏幕像素值的正方形范围,批量截图,最后压缩导出。

  • 核心代码,完整源码见尾部下载

    var map = null; //地图对象var marker = null;var packageName = '打包下载'; // 打包文件名称var zip = new JSZip();var baseList = []; // base64格式图片列表var imgNameList = []; // 图片名称列表var points = []; //经纬度点列表var filePath = null;var loading;// [113.6250387, 22.6713741], [113.64075074, 22.68880195], [113.53854455, 22.78899001], [113.52453318, 22.79709604]]; // 经纬度点列表var node = document.getElementById('map');// 打开文件按钮点击事件$("input[type='file']").change(function () {var file = this.files[0];if (window.FileReader) {var reader = new FileReader();reader.readAsDataURL(file);//监听文件读取结束后事件    reader.onloadend = function (e) {filePath = e.target.result;console.log('文件路径:' + e.target.result);// 读取文件数据处理中……loading = Qmsg.loading("读取文件数据处理中……");openFile();};}});// 导出图片按钮点击事件$("#mapexport_btn").click(function () {goScreenshotMap2Img();});// 地图初始化initMap();// 地图初始化加载function initMap() {map = L.map('map');L.tileLayer('http://webrd0{s}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}', { subdomains: ["1", "2", "3", "4"], crossOrigin: true }).addTo(map);map.setView([22.83883628, 113.50329857], 16);  //设置缩放级别及中心点}// 打开文件读取数据函数function openFile() {var result = [];var xhr = new XMLHttpRequest();xhr.open("GET", filePath, false);xhr.onload = function (e) {if (xhr.readyState === 4) {if (xhr.status === 200) {result = csvJSON(xhr.responseText);console.log(result);loadDataFromCSV(result);} else {console.error(xhr.statusText);Qmsg.warning('<i style="color:red">读取CSV文件报错异常</i>', {html: true});loading.close();}}};xhr.send(null);}// 数据预处理,批量转换坐标点function loadDataFromCSV(dataList) {for (var i = 0; i < dataList.length; i++) {var data = dataList[i];var name = data['名称'];if (name) {imgNameList.push(name);}var lat = data['纬度'];var lng = data['经度'];if (lat && lng) {lat = Number(data['纬度'].replace(/\s*/g, ""));lng = Number(data['经度'].replace(/\s*/g, ""));// 将WGS84坐标转换为GCJ02坐标var gcj02 = gcoord.transform([lng, lat], gcoord.WGS84, gcoord.GCJ02);points.push(gcj02);}}// 处理完成Qmsg.info('<i style="color:red">数据预处理完成</i>', { html: true });loading.close();}// csv数据源转换json格式数据源function csvJSON(csv) {var lines = csv.split("\n");var result = [];// var headers = lines[0].split(",");var headers = lines[0].split("\t");for (var k = 0; k < headers.length; k++) {headers[k] = headers[k].replace('\"', '').replace('\r', '').replace('\"', '')}for (var i = 1; i < lines.length; i++) {var obj = {};// var currentline = lines[i].split(",");var currentline = lines[i].split("\t");for (var n = 0; n < currentline.length; n++) {currentline[n] = currentline[n].replace('\"', '').replace('\r', '').replace('\"', '')}for (var j = 0; j < headers.length; j++) {obj[headers[j]] = currentline[j];}result.push(obj);}return result;}// 批量导出图片async function goScreenshotMap2Img() {if (points.length === 0) {Qmsg.warning('<i style="color:red">获取不到CSV文件采集点经纬度数据源,导出图片异常</i>', {html: true});return;}// 导出图片处理中loading = Qmsg.loading("导出图片处理中……");for (var i = 0; i < points.length; i++) {var point = points[i];var latlng = L.latLng(point[1], point[0]);if (marker) {marker.remove();marker = null;}marker = L.marker(latlng).addTo(map);map.setView(latlng, 16);  //设置缩放级别及中心点baseList.push(await screenshotMap2Img(latlng)); //await会阻塞当前异步函数的执行,等待promise返回处理结果}if (baseList.length === points.length && baseList.length > 0) {for (let k = 0; k < baseList.length; k++) {zip.file(imgNameList[k] + '.png', baseList[k], { base64: true })}zip.generateAsync({ type: 'blob' }).then(function (content) {saveAs(content, packageName + '.zip');loading.close();// 导出完成Qmsg.info('<i style="color:red">导出完成</i>', { html: true });});}}// 截屏图片函数……

完整内容点击跳转到小专栏文章

leaflet地图截图批量导出(附源码下载)相关推荐

  1. android 原生开发 3d地图 下载_arcgis api 3.x for js 入门开发系列二不同地图服务展示(附源码下载)...

    前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...

  2. leaflet-webpack 入门开发系列二加载不同在线地图切换显示(附源码下载)

    前言 leaflet-webpack 入门开发系列环境知识点了解: node 安装包下载 webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载地址 ...

  3. leaflet-webpack 入门开发系列三地图分屏对比(附源码下载)

    前言 leaflet-webpack 入门开发系列环境知识点了解: node 安装包下载 webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载地址 ...

  4. leaflet 结合 Echarts4 实现散点图(附源码下载)

    前言 leaflet 入门开发系列环境知识点了解: leaflet api文档介绍,详细介绍 leaflet 每个类的函数以及属性等等 leaflet 在线例子 leaflet 插件,leaflet ...

  5. arcgis api 3.x for js 入门开发系列二不同地图服务展示(附源码下载)

    前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...

  6. openlayers4 入门开发系列之地图工具栏篇(附源码下载)

    前言 openlayers4 官网的 api 文档介绍地址 openlayers4 api,里面详细的介绍 openlayers4 各个类的介绍,还有就是在线例子:openlayers4 官网在线例子 ...

  7. geoserver三维_cesium结合geoserver实现地图空间查询(附源码下载)

    前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材. 内 ...

  8. java实现高德地图app,Android 高德地图入门demo,最新高德地图实现方法,附源码及apk...

    [实例简介] Android 高德地图入门demo,最新高德地图实现方法,附源码及apk [实例截图] [核心代码] GaoDeDemo ├── GaoDeDemo │   ├── app │   │ ...

  9. leaflet+postgres+postgis(附源码下载)

    前端使用Jquery和leaflet展示地图,前端jquery封装的ajax通过js的后端运行环境node.js实现和postgres空间数据库的交互.主要实现功能(源代码下载链接在评论区): 1.数 ...

最新文章

  1. arm,asic,dsp,fpga,mcu,soc各自的特点
  2. hdu 6148 数位dp
  3. java面向对象编程集合边框_java 面向对象编程-- 第15章 集合框架
  4. 剑三服务器文件在哪里,剑三服务器同步设置在哪
  5. SpringBoot_日志-slf4j使用原理
  6. primefaces_PrimeFaces:在动态生成的对话框中打开外部页面
  7. oracle数据库安装过程中出现主目录不兼容的问题
  8. cloudflare 批量修改域名DNS
  9. 二叉树的创建和遍历(递归和非递归),查找最大值,树的高度
  10. 系统无法安装High Definition Audio的UAA总线驱动程序之解决方法
  11. Ubuntu 18.04 安装微信
  12. FormsAuthentication使用指南
  13. Linux的ftp设置
  14. ansys2017安装教程_ANSYS Student
  15. app测试和接口测试区别
  16. linux下raid0创建教程,Linux下构建raid0、raid1、raid5
  17. 通过写《费用明细表》发现写sql的乐趣
  18. 偏见与苛求在科技媒体中依旧根深蒂固
  19. vasp测试计算机,科学网—PWSCF 自洽计算、kpoints测试和ecut测试 - 叶小球的博文
  20. 【2021版】吐血整理_专升本计算机文化基础—Excel2010

热门文章

  1. react 对props进行类型限制 props-type
  2. linux基础学习6
  3. 电能管理系统运用互联网和大数据技术,为电力运维公司和售配电公司提供变电所运维云平
  4. PROFINET与以太网之间的关系?
  5. java 笔记本i7 i5_笔记本i7与i5的性能差多少
  6. Android Mac下安装Apk到模拟器上
  7. 海王...O2O获取订单地址计算经纬度的方法
  8. 电信联通iphone5前夜打响用户争夺战
  9. 抖音短视频剪映制作教程:软件界面介绍(1)
  10. 如何理解非同质化通证技术