【问题标题】:Embed leaflet data collection or geojson.io map to form嵌入传单数据收集或geojson.io地图以形成
【发布时间】:2016-09-13 13:09:05
【问题描述】:

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

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

再说一次,我的需求是基本的。一次将映射一个形状。视觉选项和控制越少越好。我的听众大多是非技术性的。

看起来像this user was trying to ask the same question,但没走多远。

谢谢!

【问题讨论】:

    标签: maps leaflet geojson leaflet.draw data-collection


    【解决方案1】:

    概念的快速证明,改编自 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/

    【讨论】:

    • 谢谢!这是一个有益的开始。我仍在研究以一种不会让用户看到代码的方式来获取 geojson 的方法。但这是一个很好的起点。
    【解决方案2】:

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

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

    这是完整的example

    【讨论】:

    • 这太棒了。正是我想要的。我想我最终可以把它变成真正实用的东西。感谢您帮助我填补空白。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    • 2021-02-10
    • 2017-06-19
    • 2016-03-04
    • 1970-01-01
    相关资源
    最近更新 更多