2016-06-29 11 views
0

Ich benutze OSM mit Layer Leaflet Js. Ich versuche den Kreis mit dem Leaflet.Editable.js zu bearbeiten. Ich denke, es ist kein richtiger Ansatz, den Kreis und den Radius mit dem Ereignis "editable: vertex: dragend" zu erhalten. Gibt es eine andere Möglichkeit, den Mittelpunkt und Radius des Kreises nach dem Ziehen zu erhalten. Hier ist meine apprachOSM leafleft JS Mittelpunkt und Radius eines bearbeitbaren Kreises ermitteln

<link href="https://leafletjs-cdn.s3.amazonaws.com/content/leaflet/master/leaflet.css" rel="stylesheet" type="text/css" /> 
<script src="https://leafletjs-cdn.s3.amazonaws.com/content/leaflet/master/leaflet.js"></script> 
<script src="Leaflet.Editable.js"></script> 
<style type="text/css"> 
    #mapdiv { height: 500px; } 
</style> 
<div id="mapdiv"></div> 
<script type="text/javascript"> 

     var map = L.map('mapdiv', {editable: true}).setView([23.2599333, 77.41261499999996], 13); 
     L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', { 
      attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors', 
      maxZoom: 30 
     }).addTo(map); 

     L.EditControl = L.Control.extend({ 
      options: { 
       position: 'topleft', 
       callback: null, 
       kind: '', 
       html: '' 
      }, 

      onAdd: function (map) { 
       var container = L.DomUtil.create('div', 'leaflet-control leaflet-bar'), 
        link = L.DomUtil.create('a', '', container); 

       link.href = '#'; 
       link.title = 'Create a new ' + this.options.kind; 
       link.innerHTML = this.options.html; 
       L.DomEvent.on(link, 'click', L.DomEvent.stop) 
          .on(link, 'click', function() { 
          window.LAYER = this.options.callback.call(map.editTools); 
          }, this); 

       return container; 
      } 

     }); 


     var circle = L.circle([23.2599333, 77.41261499999996], {radius: 1000}).addTo(map); 
     circle.enableEdit(); 
     circle.on('dblclick', L.DomEvent.stop).on('dblclick', circle.toggleEdit); 
     //circle.on('editable:vertex:drag', function (e) { 
     map.on('editable:vertex:dragend', function (e) { 
      //alert(e.vertex.latlng); 
      circle.setLatLng(e.vertex.latlng); 
      alert(circle.getRadius()); 
     }); 

</script> 

Jede Hilfe zu dieser Hinsicht oder der beste Ansatz wird sehr hilfreich sein.

+1

können Sie irgendwo eine vollständige Demo veröffentlichen? – snkashis

+0

Hallo @snkashis, Ich habe meinen Beitrag mit vollem Code bearbeitet. Sie können diesen Code kopieren und in eine Seite einfügen, um die Demo zu sehen. Laden Sie die Datei "Leaflet.Editable.js" von "https://github.com/Leaflet/Leaflet.Editable/blob/gh-pages/src/Leaflet.Editable.js" herunter und legen Sie sie im selben Ordner ab es. Vielen Dank. –

Antwort

0

Ja, ich würde vorschlagen

map.on('editable:drawing:move', function (e) { 
    console.log(circle.getLatLng()) 
    console.log(circle.getRadius()); 
}); 

gehört Dies entweder mit dem Scheitelpunkt auf dem äußeren Rand des Kreises oder schleppt des gesamten Kreises vom Zentrum Marker ziehen.