2016-05-12 17 views
0

Dies ist mein erster Versuch, mit Javascript und GeoJSON zu arbeiten. Bis jetzt habe ich die gewünschte Karte und das plugin.draw-Plugin in der Art und Weise, dass ich eine Form zeichnen kann, und es erscheint auf meinem Bildschirm. Ich habe versucht, diese Form in ein GeoJSON zu schreiben, das ich in R verwenden möchte. Deshalb habe ich die Ideen here verwendet, um die GeoJSON-Zeichenfolge zu erstellen. Ich denke, die gewünschte Information für mich ist in der Variablen shape_for_db gespeichert. Mit Firebug in Firefox kann ich diese Variable jedoch nicht finden. Kann ich hier etwas falsch machen? Dies ist das Skript ich verwende:Polygon von LeafletDraw zu GeoJSON

<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> 

Antwort

0

Der Spielraum für Ihre shape_for_db in Ihrem zweiten Hörer ist für draw-created. Sie können auf window.shape_for_db setzen, wenn Sie dies für einen einmaligen experimentellen/spielenden Ansatz tun und Ihre Entwicklerkonsole/Firebug verwenden möchten. Oder richten Sie var shape_for_db außerhalb des Hörers ein.