2

我试图找出从非技术用户那里收集单个映射多边形数据的最轻量级的方法。这是最终的愿景:用户填写网络表单,绘制形状,然后他们可以轻松地将格式化数据通过电子邮件发送给我或我的同事(我知道——电子邮件的想法可能会让读者感到恐惧,但我正在很多我无法控制的限制性参数。电子邮件是一个已知数量。)。

有没有办法去除 geojson.io 之类的东西,甚至只是一个带有 leaflet.draw 的传单地图,然后将结果坐标传递给可以通过电子邮件发送的文本?

同样,我的需求是基本的。一次将映射一个形状。视觉选项和控制越少越好。我的听众在很大程度上是非技术性的。

看起来这个用户试图问同样的问题,但没有走远。

谢谢!

4

2 回答 2

2

一个快速的概念证明,改编自Leaflet.draw示例的代码:

var drawControl = new L.Control.Draw({
  edit: {
    featureGroup: drawnItems
  }
});
map.addControl(drawControl);

map.on('draw:created', function(e) {
  var layer = e.layer,
      popupContent = layer.toGeoJSON ?
        JSON.stringify(layer.toGeoJSON()) : "(no data)";

  drawnItems.addLayer(layer);

  layer.bindPopup(popupContent).openPopup();
});

这会将绘制的项目转换为 GeoJSON 字符串,并在绑定到项目的弹出窗口中显示它。

演示:https ://jsfiddle.net/3v7hd2vx/75/

于 2016-09-13T13:40:58.063 回答
1

正如这里所解释的,你不能直接发送你的 geojson 数据,但你可以让浏览器打开一个带有预设数据的邮件客户端。

  var text=JSON.stringify(drawnItems.toGeoJSON());
  window.open('mailto:test@example.com?subject=subject&body=' + text);

这是一个完整的例子

于 2016-09-13T15:29:55.667 回答