Leaflet.draw 无法编辑multipolygon类型多边形 解决方法
2024-10-18 22:27:04
问题说明
在做面要素的编辑的时候,当对multiploygon类型的面要素进行编辑的时候,出现如下错误:
TypeError: Cannot read property 'lat' of null
通过查看github issues发现Leaftlet.Draw插件并不支持multipolygon类型的要素
https://github.com/Leaflet/Leaflet.draw/issues/268
解决方法
通过测试发现可以通过将multipolygon拆分成多个polygon要素的方法可以解决这个问题
拆分方法如下:
function multiPolygon2polygons (multiPolygon){
if(multiPolygon.type !== 'MultiPolygon'){
return
}
var polygons = [];
multiPolygon.coordinates.forEach((item)=>{
var polygon = {
type: "Polygon",
coordinates: []
};
polygon.coordinates = item;
polygons.push(polygon)
});
return polygons;
}
有时候原始数据可能还是需要保存成multipolygon类型的数据 这时就需要再讲拆分的polygons合并成一个multipolygon
合并方法如下:
function polygons2MultiPolygon(geoJson) {
var newGeoJson = {
type: "FeatureCollection",
features: [{geometry: {coordinates: [], type: "MultiPolygon"}, type: "Feature", properties: {}}]
};
geoJson.features.forEach((item) => {
if(item.geometry.type === "Polygon"){
newGeoJson.features[0].geometry.coordinates.push(item.geometry.coordinates);
}else{
item.geometry.coordinates.forEach((item) => {
newGeoJson.features[0].geometry.coordinates.push(item);
})
}
})
return newGeoJson;
}
最新文章
- mysql高并发和表类型
- 网站迁移时候,发现<;head>;内容都到body里了
- redis 在32位系统安装以及使用
- 彻底卸载sublime txt
- python核心编程学习记录之Python对象
- [AngularJS学习笔记] 基础学习01
- Linux 小记录
- 武汉科技大学ACM:1005: 华科版C语言程序设计教程(第二版)例题5.8
- 基于JDK1.8的HashMap分析
- put与putIfAbsent区别
- Arch Linux下Visual Stdio Code在格式化C代码时报错
- telegram即时通信软件和outline ---- by 余弦 by倾旋
- PEM routines:PEM_read_bio:no start line
- mac、linux 查看端口占用程序
- 51nod 算法马拉松4 B递归(YY)
- jQuery File Upload 文件上传插件使用二 (功能完善)
- POJ 1597 Function Run Fun
- 洛谷P2047 [NOI2007]社交网络 [图论,最短路计数]
- 由浅入深了解EventBus:(三)
- C# Winform 实现自定义半透明遮罩层介绍
热门文章
- [LeetCode]无重复字符的最长子串
- 用AOP思想改造一个服务器的数据存储
- 课程一(Neural Networks and Deep Learning),第三周(Shallow neural networks)—— 1、两层神经网络的单样本向量化表示与多样本向量化表示
- Java读取文件加锁代码Demo(利用Java的NIO)
- Postman入门之Mock测试
- Shell的并发
- es-05-获取 resthighlevelclient及api
- dhcp服务器(一)
- springMVC上传文件简单案例
- (转)Spring常见注解总结