Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从单张多边形中获取坐标_Javascript_Php_Mysql_Leaflet - Fatal编程技术网

Javascript 如何从单张多边形中获取坐标

Javascript 如何从单张多边形中获取坐标,javascript,php,mysql,leaflet,Javascript,Php,Mysql,Leaflet,我使用传单绘制多边形。我成功地做到了这一点,但当我单击“编辑”时,我可以编辑多边形,但它无法将坐标提取到HTML、、“坐标”字段中。我如何才能做到这一点?有什么问题吗?谢谢!我将坐标保存到MYSQL数据库中作为VARCHAR。谢谢 $(".edit_zona").click(function(){ var id_zona = $(this).attr("id").substring(10); //alert(id_zona);

我使用传单绘制多边形。我成功地做到了这一点,但当我单击“编辑”时,我可以编辑多边形,但它无法将坐标提取到HTML、、“坐标”字段中。我如何才能做到这一点?有什么问题吗?谢谢!我将坐标保存到MYSQL数据库中作为VARCHAR。谢谢

$(".edit_zona").click(function(){
            var id_zona = $(this).attr("id").substring(10);
            //alert(id_zona);
            $.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;
  }
    var zona = JSON.parse('<?php echo json_encode($arr) ?>');
     for(var i=0; i < zona.length; i++) {
       //console.log(zona[i]['geolocatii']);
    var polygon = L.polygon( stringToGeoPoints(zona[i]['geolocatii']), { color: 'red'}).addTo(map); 
    polygon.editing.enable();
   }
   map.addControl(new L.Control.Draw({
     draw : {
        position : 'topleft',
        polygon : true,
        polyline : false,
        rectangle : false,
        circle : false,
        marker: false,
        circlemarker: false
    },
    edit : {
        featureGroup: drawnItems
    }

    }));
   var featureGroup = L.featureGroup().addTo(map);
     function drawArea() {
          var polygon;
          var draggableAreaMarkers = new Array();
   if(polygon != null) {
    map.removeLayer( polygon );
   }

   var latLngAreas = new Array();

   for(i=0; i<draggableAreaMarkers.length; i++) {
    if(draggableAreaMarkers[i] != "") {
     latLngAreas.push( L.latLng( draggableAreaMarkers[ i ].getLatLng().lat, draggableAreaMarkers[ i ].getLatLng().lng));
    }
   }

   if(latLngAreas.length > 1) {
    // create a blue polygon from an array of LatLng points
    polygon = L.polygon( latLngAreas, { color: 'blue' }).addTo(map);
   }

   if(polygon != null) {
    // zoom the map to the polygon
    map.fitBounds( polygon.getBounds() );
   }
  }
 map.on('draw:created', function (e) {
        var type = e.layerType,
                layer = e.layer;

        if (type === 'marker') {
            layer.bindPopup('Call Point!');
        }

        drawnItems.addLayer(layer);

        var shapes = getShapes(drawnItems);

        console.log("shapes",shapes);

  var points = e.layer.getLatLngs();
  var puncte = JSON.stringify(points);
 // console.log(puncte);

    });
map.on(L.Draw.Event.CREATED, function (e) {
    map.addLayer(e.layer);
    var points = e.layer.getLatLngs();
    puncte1=points.join(',');
  puncte1=puncte1.toString();
  puncte1=points.join(',').match(/([\d\.]+)/g).join(',')
  //console.log(puncte1);
$('#geo').val(puncte1);
 //console.log(puncte1);

});

    var getShapes = function (drawnItems) {

        var shapes = [];
        shapes["polyline"] = [];
        shapes["circle"] = [];
        shapes["marker"] = [];

        drawnItems.eachLayer(function (layer) {

            // Note: Rectangle extends Polygon. Polygon extends Polyline.
            // Therefore, all of them are instances of Polyline
            if (layer instanceof L.Polyline) {
                shapes["polyline"].push(layer.getLatLngs())
            }

            if (layer instanceof L.Circle) {
                shapes["circle"].push([layer.getLatLng()])
            }

            if (layer instanceof L.Marker) {
                shapes["marker"].push([layer.getLatLng()],layer.getRadius());
            }

        });

        return shapes;

    };
    var arr = JSON.parse( '<?php echo json_encode($arr) ?>' );
    console.log(arr);
            });
        });
$(“.edit_zona”)。单击(函数(){
var id_zona=$(this).attr(“id”).substring(10);
//警报(id_zona);
$.ajax({
类型:“POST”,
url:“ajax/edit_zona.php”,
数据:{
id:id_zona
},
cache:false,
数据类型:“html”
}).done(功能(毫秒){
$(“#回复”).html(ms);
瓦尔·奥斯穆尔https://api.mapbox.com/styles/v1/mapbox/streets-v10/tiles/{z} /{x}/{y}?访问_令牌=pk.eyj1ijoibwvnytyzoiljhijoi2ozbxpszhgxmdaznjxbndwedq4am5mzyj9.uHEjtQhnIuva7f6pAfrdTw',
osmAttrib=“©;贡献者”,
osm=L.tileLayer(osmUrl,{maxZoom:18,attribution:osmAttrib}),
map=newl.map('map',{中心:newl.LatLng(44.9323281,26.0306833),缩放:12.25}),
drawnItems=L.featureGroup().addTo(映射);
控制层({
“osm”:osm.addTo(映射)
}添加到(地图);
函数stringToGeoPoints(geo){
var linesPin=geo.split(“,”);
var linesLat=新数组();
var linesLng=新数组();
对于(i=0;i对于(i=0;i,BBox工具可能会对您有所帮助:


该工具基于传单绘制插件,配备坐标网格。绘制方框后,您将获得URl路径中的坐标。

或许BBox工具将对您有所帮助:


该工具基于传单绘制插件,配备了坐标网格。一旦你绘制了框,你就会在你的URl路径中获得坐标。

我可能会建议在多边形中添加一个
dragend
事件侦听器,然后可以捕获点的新位置id something@RamRaider,但它给我带来了一些东西rd…我可能会建议在多边形中添加一个
dragend
事件侦听器,然后可以捕获PointsId something@RamRaider的新位置,但这让我觉得有些奇怪。。。