【发布时间】:2021-10-23 09:22:01
【问题描述】:
不必为将 CSV 文件拖放到传单地图中找到任何解决方案。有一个用于 GeoJSON、TopoJSON 和压缩 Shapefile Drag and Drop calvinmetcalf 的插件。 对于这些文件,您需要可以转换为这些文件类型的 GIS 软件或特殊工具。我想要一个普通的 CSV 文件,用户无需特殊软件即可使用。
Esri 具有类似于我正在寻找的功能。将 CSV 简单拖放到地图上,CSV 当然需要有纬度/经度值才能工作...
我一直在尝试使用以下脚本使用拖放功能和这个插件Leaflet.geoCSV。但不确定如何让删除的文件与插件交互。该文件已上传到浏览器,但无法将数据显示在地图上并且没有错误...我遗漏了某些内容或所有内容都出错了...
<div id="map" ondrop="dropHandler(event);" ondragover="dragOverHandler(event);"></div>
<script type="text/javascript" src="../js/leaflet.geocsv.js"></script>
function dragOverHandler(ev) {
console.log('File(s) in drop zone');
// Prevent default behavior (Prevent file from being opened)
ev.preventDefault();
}
function dropHandler(ev) {
console.log('File(s) dropped');
// Prevent default behavior (Prevent file from being opened)
ev.preventDefault();
if (ev.dataTransfer.items) {
// Use DataTransferItemList interface to access the file(s)
for (var i = 0; i < ev.dataTransfer.items.length; i++) {
// If dropped items aren't files, reject them
if (ev.dataTransfer.items[i].kind === 'file') {
var file = ev.dataTransfer.items[i].getAsFile();
console.log('... file[' + i + '].name = ' + file.name);
}
}
} else {
// Use DataTransfer interface to access the file(s)
for (var i = 0; i < ev.dataTransfer.files.length; i++) {
var geoLayer = L.geoCsv(ev.dataTransfer.files[i].name, {firstLineTitles: true, fieldSeparator: ';'});
map.addLayer(geoLayer);
geoLayer.addTo(map);
//console.log('... file[' + i + '].name = ' + ev.dataTransfer.files[i].name);
}
}
// Pass event to removeDragData for cleanup
// removeDragData(ev)
}
function removeDragData(ev) {
console.log('Removing drag data')
if (ev.dataTransfer.items) {
// Use DataTransferItemList interface to remove the drag data
ev.dataTransfer.items.clear();
} else {
// Use DataTransfer interface to remove the drag data
ev.dataTransfer.clearData();
}
}
/*
//Example script from Leaflet.geoCSV
(function() {
'use strict';
var map = L.map('mapContainer');
$.get('data.csv', function(csvContents) {
var geoLayer = L.geoCsv(csvContents, {firstLineTitles: true, fieldSeparator: ','});
map.addLayer(geoLayer);
});
}); */
【问题讨论】:
标签: csv drag-and-drop leaflet