2017-01-23 2 views
0

sind Ich kann ein Polygon zeichnen und es in einer MySQL-Datenbank speichern. (Wenn jemand jetzt wie fragen muss).Wie kann ich Polygone hinzufügen, die von MyQL

Ich kann auch eine SELECT-Anfrage an meine Datenbank senden und die gespeicherten Polygone anzeigen. Hier

ist, was meine Datenbank gibt mir

{ 
    "type":"FeatureCollection", 
    "features":[ 
     { 
      "id":1, 
      "type":"Feature", 
      "properties":{}, 
      "geometry":{ 
       "type":"Polygon", 
       "coordinates":[ 
        [ 
         [6.146185398101807,46.447689601949826], 
         [6.146475076675416,46.44726084421887], 
         [6.1472368240356445,46.44776352535544], 
         [6.1466360092163095,46.447833752497885], 
         [6.146185398101807,46.447689601949826] 
        ] 
       ] 
      } 
     }, 
     { 
      "id":"id", 
      "type":"Feature", 
      "properties":{}, 
      "geometry":{ 
       "type":"Polygon", 
       "coordinates":[ 
        [ 
         [6.146185398101807,46.447689601949826], 
         [6.146475076675416,46.44726084421887], 
         [6.1472368240356445,46.44776352535544], 
         [6.1466360092163095,46.447833752497885], 
         [6.146185398101807,46.447689601949826] 
        ] 
       ] 
      } 
     } 
    ] 
} 

Aber wie kann ich eine Schicht mit meiner Polygone zu meiner Karte hinzufügen, mit der Möglichkeit, es zu bearbeiten oder zu löschen, als ob ich ein neues Polygon bildet mein Draw zeichnen Steuerung.

wie es kein Ereignis, kann ich dies nicht, oder ?:

map.on(L.Draw.Event.CREATED, function (e) { 
    var type = e.layerType, 
    layer = e.layer; 


    FGgpx.addLayer(layer); 

    var shape = layer.toGeoJSON() 
    var shape_for_db = JSON.stringify(shape); 

    console.log("Create"); 
    console.log(shape_for_db); 
    // Save to db 

    saveGeofences(1,shape_for_db); 
}); 

ich ohne Ergebnis versucht! Aber es ist wie eine Kreation? Ist das nicht? Hier

ist der Code, ich benutze das Polygon aus meiner Datenbank zu erhalten:

function getGeofences(devise_id){ 
    $.ajax({ 
    type: "POST", 
    url: "maps/sql/getGeofences.php", 
    //data: {data:data}, 
    data: {devise_id:devise_id}, 
    success: result, 
    error: error, 
    dataType: "json" 
    }); 

    function error(data) 
    { 
    console.log("Error getGeofences"); 
    console.log(data); 
    } 

    function result(data){ 
    console.log("Geofences from DB"); 
    console.log(data); 

    // How can I add a layer with the polygons to my map 
    //FGgpx.addLayer(data); // This does not works 

    } 
} 

Antwort

0
var drawnItems = new L.FeatureGroup(); 

for (var i = 0; i < data.features.length; i++){ 
    var layer = L.GeoJson.geometryToLayer(data.features[i]); 
    layer.addTo(drawnItems); 
} 

map.addLayer(drawnItems); 

Die for-Schleife Schleifen über die Funktionen in Ihrem GeoJSON und wandelt sie in Schichten, so können die Polygone angezeigt werden auf der Karte. Jede Feature wird der Feature-Gruppe drawnItems hinzugefügt, mit der die Layer gruppiert und als eine Einheit behandelt werden können. Daher können sie der Map zusammen hinzugefügt werden. Auf diese Weise kann der Zustand der Karte auf den Zustand festgelegt werden, in dem die Polygone gezeichnet wurden, bevor sie in der Datenbank gespeichert wurden.

Hoffnung, die hilft, Csaba

+0

Eine kleine Erklärung ist immer willkommen - erklären, wie der Code, den Sie Werke geschrieben haben, und wo die OP davon Gebrauch machen können. – Tom

Verwandte Themen