【问题标题】:How can I add polygons extracted from MyQL如何添加从 MySQL 中提取的多边形
【发布时间】:2017-01-23 22:51:46
【问题描述】:

我可以绘制一个多边形并将其保存到 MySQL 数据库中。 (如果有人现在需要怎么做,请问)。

我还可以向我的数据库发送一个 SELECT 请求并显示保存的多边形。

这是我的数据库返回给我的内容

{
    "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]
                    ]
                ]
            }
        }
    ]
}

但是我如何在我的地图中添加一个带有我的多边形的图层,并且可以编辑或删除它,就像我从我的 Draw Control 中绘制一个新的多边形一样。

因为不是事件,我不能用这个吧?:

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);
});

我试过了,没有结果! 但它就像一个创造?不是吗?

这是我用来从我的数据库中获取多边形的代码:

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

  }
}

【问题讨论】:

    标签: leaflet polygon leaflet.draw


    【解决方案1】:
    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);
    

    for 循环遍历 GeoJSON 中的要素并将它们转换为图层,以便可以在地图上显示多边形。每个要素都被添加到 drawItems 要素组中,允许图层被分组并作为一个处理,因此可以一起添加到地图中。这样可以将地图的状态设置为在将多边形保存到数据库之前绘制多边形时的状态。

    希望对您有所帮助, 沙巴

    【讨论】:

    • 欢迎提供一点解释 - 解释您发布的代码是如何工作的,以及 OP 可以在哪里使用它。
    猜你喜欢
    • 1970-01-01
    • 2015-10-11
    • 1970-01-01
    • 2021-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-10
    相关资源
    最近更新 更多