Вставить сбор данных листовки или карту geojson.io в форму

Я пытаюсь найти самый легкий способ сбора данных для отдельных сопоставленных полигонов от нетехнических пользователей. Вот конечное видение: пользователи заполняют веб-форму, рисуют форму, а затем они могут легко отправить свои отформатированные данные по электронной почте мне или моим коллегам (я знаю - идея электронной почты, вероятно, ужасает читателей, но я работаю в множество ограничительных параметров вне моего контроля. Электронная почта является известным количеством.).

Есть ли способ вырезать что-то вроде geojson.io или даже просто карту листовки с leaflet.draw и затем передавать полученные координаты в текст, который можно отправить по электронной почте?

Опять же, мои потребности являются основными. Одна форма будет отображаться одновременно. Чем меньше визуальных опций и элементов управления, тем лучше. Моя аудитория в основном очень нетехническая.

Похоже, этот пользователь пытался задать тот же вопрос, но далеко не ушел.

Спасибо!

2 ответа

Решение

Как объясняется здесь, вы не можете отправлять данные геоджона напрямую, но вы можете позволить браузеру открыть почтовый клиент с предустановленными данными.

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

Вот полный пример

Быстрое подтверждение концепции, адаптируя код из примера 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/

Другие вопросы по тегам