简体   繁体   English

传单编辑多边形问题

[英]Leaflet edit polygon issue

I have a Leaflet polygon that I want to edit it in the admin interface, but the thing is that it always shows me the same polygon. 我有一个Leaflet多边形,我想在管理界面中对其进行编辑,但事实是它总是向我显示相同的多边形。 If I click on that pencil it should show me some different polygons, not the same. 如果我单击那支铅笔,它应该显示一些不同的多边形,而不是相同的多边形。 I think the problem is that I need to refresh the page when I click on save. 我认为问题是单击“保存”时需要刷新页面。 How can I do this? 我怎样才能做到这一点? I think it keeps it on the cache... 我认为它可以将其保存在缓存中...

在此处输入图片说明

And this is what it looks like the edit: 这是看起来像编辑的内容:

在此处输入图片说明

The code for editing is: 用于编辑的代码是:

$(".edit_zona").click(function(){
            var id_zona = $(this).attr("id").substring(10);
            $.ajax({
                type: "POST",
                url: "ajax/edit_zona.php",
                data:{
                id: id_zona
                },
                   cache:false,
                   dataType: "html"

            }).done(function(ms){
                $("#response").html(ms);
               var osmUrl = 'https://api.mapbox.com/styles/v1/mapbox/streets-v10/tiles/{z}/{x}/{y}?access_token=pk.eyJ1IjoibWVnYTYzODIiLCJhIjoiY2ozbXpsZHgxMDAzNjJxbndweDQ4am5mZyJ9.uHEjtQhnIuva7f6pAfrdTw',
            osmAttrib = '&copy; <a href="http://openstreetmap.org/copyright">OpenStreetMap</a> contributors',
            osm = L.tileLayer(osmUrl, { maxZoom: 18, attribution: osmAttrib }),
            map = new L.Map('map', { center: new L.LatLng(44.9323281,26.0306833), zoom: 12.25 }),
            drawnItems = L.featureGroup().addTo(map);
    L.control.layers({
        'osm': osm.addTo(map)
    },).addTo(map);

      function stringToGeoPoints( geo ) {
   var linesPin = geo.split(",");

   var linesLat = new Array();
   var linesLng = new Array();

   for(i=0; i < linesPin.length; i++) {
    if(i % 2) {
     linesLng.push(linesPin[i]);
    }else{
     linesLat.push(linesPin[i]);
    }
   }

   var latLngLine = new Array();

   for(i=0; i<linesLng.length;i++) {
    latLngLine.push( L.latLng( linesLat[i], linesLng[i]));
   }

   return latLngLine;
  } //I think here it's the problem
    var zona = JSON.parse('<?php echo json_encode($arr) ?>');
     for(var i=0; i < zona.length; i++) {
    var polygon = L.polygon(stringToGeoPoints(zona[i]['geolocatii']), { color: 'red'}); 
    polygon.editing.enable();
    polygon.addTo(map);
   }
   map.addControl(new L.Control.Draw({
     draw : {
        position : 'topleft',
        polygon : true,
        polyline : false,
        rectangle : false,
        circle : false,
        marker: false,
        circlemarker: false
    },
    edit : {
        featureGroup: drawnItems,
        remove: false
    }

    }));
   var featureGroup = L.featureGroup().addTo(map);
     map.on("click", function(e){
      poligon= polygon.getLatLngs();
      poligon2=poligon.join(',').match(/([\d\.]+)/g).join(',')

      $('#geo').val(poligon2);
  console.log(poligon2);
    });
    var arr = JSON.parse( '<?php echo json_encode($arr) ?>' );
   // console.log(arr);
            });
        });

I don't know where the problem is, any ideas? 我不知道问题出在哪里,有什么主意吗? By the way, I take this polygons from the MYSQL database. 顺便说一下,我从MYSQL数据库中获取了这些多边形。

I resolved the issue with an if: 我通过if解决了这个问题:

  for(var i=0; i < arr.length; i++) {
    if(id_zona==arr[i]['id']){
    var polygon = L.polygon(stringToGeoPoints(arr[i]['geolocatii']), { color: 'red'}).addTo(map); 
    polygon.editing.enable();
      console.log(polygon);
    break;
  }

} }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM