leaflet使用L.KML.js插件上传本地kml文件到leaflet中

2 篇文章 0 订阅
订阅专栏

发现网上的案例都是加载项目assets内的kml文件,而实际的需求是:用户需要上传自己计算机上的kml文件,找了半天没找到案例,最后终于研究出来了,喜欢的点赞支持!

1.网上案例使用 L.KML.js插件代码如下(缺点是只能加载项目目录的kml):

<html>
    <head>
        <link rel="stylesheet" href="http://unpkg.com/leaflet@1.4.0/dist/leaflet.css" />
        <script src="http://unpkg.com/leaflet@1.4.0/dist/leaflet.js"></script>
        <script src="./L.KML.js"></script>
    </head>
    <body>
        <div style="width: 100vw; height: 100vh" id="map"></div>
        <script type="text/javascript">
            // Make basemap
            const map = new L.Map('map', { center: new L.LatLng(58.4, 43.0), zoom: 11 });
            const osm = new L.TileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png');
            map.addLayer(osm);
            fetch('assets/aoi1.kml')
                .then(res => res.text())
                .then(kmltext => {
                  console.log(kmltext);
                    const parser = new DOMParser();
                    const kml = parser.parseFromString(kmltext, 'text/xml');
                    const track = new L.KML(kml);
                    map.addLayer(track);
                    // Adjust map to show the kml
                    const bounds = track.getBounds();
                    map.fitBounds(bounds);
                });
        </script>
    </body>
</html>

2.笔者实际开发中,用的是vue的naiveUI组件上传的kml文件(element UI和原生HTML5的input file原理一样),核心代码如下:

<template>
...
  <n-upload :on-change = "handleFileSelect" accept=".kml" :max="1">
   <span>上传kml</span>
 </n-upload>
...
</template>

<script>
...
handleFileSelect(evt){
  let file = evt.fileList[0].file; 
  const reader = new FileReader();
  reader.readAsDataURL(file)
  reader.onload = ()=>{
    fetch(reader.result)
    .then(res => res.text())
    .then(kmltext => {
      const parser = new DOMParser();
      const kml = parser.parseFromString(kmltext, 'text/xml');
      const track = new L.KML(kml);
      state.map.addLayer(track);
      // Adjust map to show the kml
      const bounds = track.getBounds();
      state.map.fitBounds(bounds);
     });
  }
  reader.onerror = e => console.log(e);
}
...
<script>

3.效果如下

 

003:vue+leaflet 清除所有图层的通用方法
大剑师兰特的GIS世界
09-08 2872
本示例的目的是介绍演示如何在vue+leaflet添加各种地图,并清除所有的图层。貌似很简单的一个示例,但是在学习和工作非常重要,往往会根据项目的需要来删除图层,达到预期效果。点击查看本专栏内容目录列表。
061:vue+leaflet 加载KML数据显示图形(方法3)
大剑师兰特的GIS世界
02-14 339
第061个本示例的目的是介绍演示如何在vue+leaflet加载kml文件,并解析后在地图上显示图形,这里是第三种方法,前两种方法请参考目录查询。
leaflet 加载kml文件
生命不息,学习不止
05-11 981
leaflet加载kml文件
KML格式详解,javascript写入读取KML示例
大剑师兰特的GIS世界
08-05 2431
KML(Keyhole Markup Language)是一种基于 XML 的文件格式,用于表示地理数据。KML 文件可以用来描述地理空间的点、线、多边形等对象,并且可以包含丰富的媒体信息,如图像、视频和链接。KML 文件经常被用于 Google Earth 和 Google Maps 显示地理信息。
Leaflet.FileLayer, 使用HTML5文件API将文件本地( GeoJSON,KML,GPX ) 加载为层.zip
09-18
Leaflet.FileLayer, 使用HTML5文件API将文件本地( GeoJSON,KML,GPX ) 加载为层 Leaflet.FileLayer使用 API 将本地文件加载到映射,不需要服务器调用就可以加载 !简单的地图控件用户可以在本地浏览文件它被本地读取( FileReader ) 并转换为 GeoJSON最终作为一个层加载 !
049:vue+leaflet加载KML文件,显示图形(方法2)
大剑师兰特的GIS世界
02-10 828
第049个本示例的目的是介绍演示如何在vue+leaflet加载KML文件,将图形显示在地图上。
129:vue+leaflet 使用L.geoJSON加载文件,参数onEachFeature的使用方法
大剑师兰特的GIS世界
04-06 839
第129个本示例的目的是介绍演示如何在vue+leaflet加载geojson文件,这里介绍onEachFeature的使用方法。onEachFeature 选项是在将每个功能添加到GeoJSON图层之前调用的功能。使用此选项通常是为了点击某个功能时可以附加弹出窗口。
127: vue+leaflet 使用L.geoJSON加载文件,参数filter的使用方法
大剑师兰特的GIS世界
04-06 534
第127个本示例的目的是介绍演示如何在vue+leaflet加载geojson文件,这里介绍filter的使用方法。filter将用于决定是否包含某个功能的函数。默认是包括所有特征。
060:vue+leaflet 本地上传KML文件,在地图上解析显示图形
大剑师兰特的GIS世界
02-14 433
第060个本示例的目的是介绍演示如何在vue+leaflet本地上传kml文件,利用解析此kml文件,在地图上显示图形。
096:vue+leaflet 转换geojson文件,导出KML格式文件
大剑师兰特的GIS世界
03-01 643
第096个本示例的目的是介绍演示如何在vue+leaflet将geojson格式的文件做出转换,导出KML格式文件
kml2json:我是一个将 kml 文件(例如谷歌地图导出)转换为 json 的小工具,用于令人难以置信的项目 Leaflet.TileLegend (https
07-22
kml2json 我将 kml 文件(例如谷歌地图导出)转换为 json 的小工具,用于令人难以置信的项目 Leaflet.TileLegend ( )
js-simplekml:Javascript kml解析器
05-04
js-simplekml Javascript kml解析器
kml 生成工具(关于Google kml的)
12-11
是关于kml的生成文件,用于编软件时用api控制图层,提供kml的生成
leafletDemo集合
06-06
包含坐标点聚合、画线、画面、画点、图层设置、谷歌卫星影像地图等图层、加载KML文件、加载网络wms资源等例子
058:vue+leaflet 本地上传shp文件,在map上解析显示图形
大剑师兰特的GIS世界
02-13 870
第058个本示例的目的是介绍演示如何在vue+leaflet本地上传shp文件,利用读取shp数据,并在地图上显示图形。
js解析kml文件_webpack原理解析
weixin_39750410的博客
12-12 1163
一个人要拼搏奋斗,动力绝不来自于敬重,而是恐惧。《纸牌屋》webpack的本质是一个 bundler。作用是将相互依赖、关联的多个文件,打包成一个浏览器可以执行的代码块。想要了解 bundler 的原理,最好的方法就是实现他。下面就实现一个简单的 bundler。思路实现 bundler 思路上分这四步:分析入口文件:入口文件是整个项目的开始,通过生成该文件的抽象语法树进行语法分析。根据...
KML使用本地js文件模块
pouloghost的专栏
05-30 2326
GE5.0以上版本的description块能直接使用html+js+css,GE使用webkit渲染。但是有一个很大的问题。 GE为了避免开放本地文件访问带来的危险,直接把的使用封掉了。即使按照官方的设置方法,开放本地文件读取,仍然不能使用本地js。在无网络环境下,这个很扯啊,必须有本地js啊。 看网上大神们,直接在各个description里添加完整的js代码,果断不靠谱啊。如果有n个d
KML服务
技术积累、分享成果
06-05 2157
目录(?)[+] 本章首先对KML的语法进行了简单的介绍了,然后介绍了KML服务,展示了如何将MapGuide的数据导出为KML,使Google Earth成为MapGuide的客户端。 1.1  KML Google Earth是Google公司开发的虚拟地球软件,它可以带您飞往地球上的任何地方,您可以在 Google Earth上看到卫星图像、地图、地形和 3D 建筑等。而且,G
知识图谱-基于Neo4j+Python+Cypher+KG实现的小型金融知识图谱构建项目-附项目源码+流程教程-优质项目实战
最新发布
10-20
知识图谱_基于Neo4j+Python+Cypher+KG实现的小型金融知识图谱构建项目_附项目源码+流程教程_优质项目实战
leaflet加载本地kml
05-12
leaflet是一种JavaScript开源库,用于在Web上构建交互性地图。虽然它很容易使用,在加载本地kml时,需要一些额外的...通过这个代码,您可以将kml文件加载到您的Leaflet地图,仔细检查代码,并根据您的需求进行修改。
写文章

热门文章

  • Python 3.x提取数据某一行或某一列或特定位置元素 48416
  • Python之使用K-Means算法聚类消费行为特征数据分析(异常点检测) 10994
  • Vue3中使用navieUI的message方法 10185
  • leaflet加载wms和wfs服务 2645
  • SuperMap将osgb场景数据从iDsektop10.x发布到iServer(linux)全过程 2575

分类专栏

  • vite 1篇
  • 跨域 1篇
  • vue 6篇
  • JavaScript 2篇
  • leaflet 2篇
  • Cesium 2篇
  • ArcGIS 3篇
  • 笔记 8篇
  • 地图发布 2篇
  • 机器学习 1篇
  • 异常点分析

最新评论

  • Vue3中使用navieUI的message方法

    夏日zzz: 感谢分享,终于会用了表情包

  • Vue3中使用navieUI的message方法

    长而不宰: 不得不说,这个官网的描述是真抽象,真的是给人看的吗?

  • leaflet使用L.KML.js插件上传本地kml文件到leaflet中

    iHyanu: 你好,有全部的源码吗

  • vue框架下动态修改Cesium.Entity透明度

    (Always): 你解决了吗

  • vue框架下动态修改Cesium.Entity透明度

    (Always): 我设置也是一闪一闪的

大家在看

  • 数据结构与算法分析:你真的理解排序算法吗——插入算法(万字长文+代码详解) 2

最新文章

  • vite中proxy跨域配置实例
  • webgis画多边形结束之后的异步事件
  • leaflet加载wms和wfs服务
2022年2篇
2021年22篇
2019年2篇
2018年3篇

目录

目录

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

q124467623

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

玻璃钢生产厂家东方母爱公园 雕塑 玻璃钢山东玻璃钢几何雕塑黑龙江创意玻璃钢雕塑优势陆丰玻璃钢十二生肖雕塑歙县玻璃钢雕塑厂家玻璃钢吗雕塑甘孜卡通玻璃钢雕塑福建装饰商场美陈生产厂家山东商场美陈采购广州玻璃钢雕塑艺术有限公司芜湖玻璃钢雕塑工厂玻璃钢酒保人物雕塑图片江苏仿铜孔子玻璃钢雕塑公司朝阳市玻璃钢雕塑定制专业玻璃钢雕塑销售价格普洱玻璃钢大象雕塑价格东莞玻璃钢雕塑定做镁泥和玻璃钢花盆玻璃钢雕塑脱模后怎么清洗上漆玻璃钢的雕塑制作流程太原玻璃钢仿真水果雕塑厂家制作玻璃钢雕塑方法商场元宵灯会美陈福建走廊商场美陈供货商玻璃钢雕塑容易掉色吗玻璃钢花盆雕塑制作厂家鹰潭玻璃钢雕塑生产厂家玻璃钢牛雕塑制作铜川市玻璃钢雕塑定制玻璃钢雕塑是什么香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化