从传单数据到GeoJSON的多边形

Polygon from LeafletDraw to GeoJSON

本文关键字:GeoJSON 多边形 数据 单数据      更新时间:2023-09-26

这是我第一次尝试使用传单处理javascript和GeoJSON。到目前为止,我已经得到了想要的地图和leaflet.draw插件,它们的工作方式是我可以绘制一个形状,并显示在我的屏幕上。我试着把这个形状写成我想在R中使用的GeoJSON。因此,我使用这里提供的思想来创建GeoJSON字符串。我认为我想要的信息存储在变量shape_for_db中。然而,在Firefox中使用Firebug时,我找不到这个变量。我这里有什么问题吗?这是我正在使用的脚本:

<html>
<head>
  <title>A Leaflet map!</title>
  <link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet/v1.0.0-rc.1/leaflet.css" />
  <link rel="stylesheet" href="http://leaflet.github.io/Leaflet.draw/leaflet.draw.css" />
  <script src="http://cdn.leafletjs.com/leaflet/v1.0.0-rc.1/leaflet.js"></script>
  <script src="jquery-2.1.1.min.js"></script>
  <script src="http://leaflet.github.io/Leaflet.draw/leaflet.draw.js"></script>
  <style>
    #map{ width: 100%; height: 100%; }
  </style>
</head>
<body>

  <div id="map"></div>
  <script>
  // base map
  var map = L.map('map').setView([51.25,10.57], 8);
  // load a tile layer
 L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png',
    {
      attribution: 'Tiles by: OpenStreetMaps',
      maxZoom: 17,
      minZoom: 5
    }).addTo(map);
// Initialise the FeatureGroup to store editable layers
var drawnItems = new L.FeatureGroup();
map.addLayer(drawnItems);
// Initialise the draw control and pass it the FeatureGroup of editable layers
        var drawnItems = new L.FeatureGroup();
        map.addLayer(drawnItems);
        var drawControl = new L.Control.Draw({
            edit: {
                featureGroup: drawnItems
            }
        });
        map.addControl(drawControl);
        map.on('draw:created', function (e) {
            var type = e.layerType,
                layer = e.layer;
            drawnItems.addLayer(layer);
        });
// Shape to GeoJSON
map.on('draw:created', function (e) {
  var type = e.layerType;
  var layer = e.layer;
  var shape = layer.toGeoJSON()
  var shape_for_db = JSON.stringify(shape);
});
  </script>
</body>
</html>

shape_for_db的作用域在draw-created的第二个侦听器内。如果你这样做是为了一次性的实验/模拟方法,并且想使用你的开发控制台/Firebug,你可以把它放在window.shape_for_db上。或者在侦听器之外设置var shape_for_db