2014-11-14 19 views
5

Đó là những ngày tôi đang cố giải quyết vấn đề của mình.Làm thế nào để chỉ cho phép chỉnh sửa một đối tượng địa lý/đa giác cùng lúc với Leaflet?

Tôi có lớp đa giác từ GeoJSON. Tôi muốn chỉnh sửa đa giác của mình bằng sự kiện nhấp chuột. Khi tôi nhấp vào một đa giác, nó sẽ trở thành có thể chỉnh sửa nhưng điều tôi muốn là khi tôi nhấp vào một đa giác khác, đa giác đầu tiên không còn ở chế độ có thể chỉnh sửa nữa.

OpenLayers nhưng tự nhiên không có Leaflet.

Dưới đây là một đoạn trích từ mã của tôi:

var editableLayers = new L.FeatureGroup().addTo(map); 
var polygon_json; 
    $.ajax({ 
    type: "GET", 
    dataType: "json", 
    url: "get_json.php", 
    success: function (response) { 
         meaux_json = L.geoJson(response, { 
         onEachFeature: onEachFeature  
         }); 
         } 
    }); 

//edit the targeted polygon 
function onEachFeature (feature, layer) { 
        editableLayers.addLayer(layer); 
        layer.on('click', function(e){ 
        e.target.editing.enable(); 
        }); 
       } 

Một người đã có thể làm điều đó nhưng tôi gặp khó khăn trong việc tìm hiểu: https://github.com/dwilhelm89/Ethermap

+0

Khi tôi nhấp vào đa giác/đa giác trong bản trình diễn của bạn, nó sẽ trở thành có thể chỉnh sửa. Sau đó, khi tôi nhấp vào một poly khác trong bản trình diễn của bạn, chỉnh sửa trên trang đầu tiên bị tắt và đa giác thứ 2 được bật để chỉnh sửa. Có vẻ như nó đang hoạt động theo cách bạn muốn ngay bây giờ. –

+0

cảm ơn câu trả lời nhưng nó không phải là bản demo của tôi, đó là một người khác đã làm điều đó không phải tôi ^^, và tôi không biết làm thế nào. – Revocyl

+0

Xin chào. Bạn có thể xin vui lòng gửi toàn bộ mã của bạn (bao gồm cả các điều khiển vẽ tờ rơi?) Tôi cố gắng làm một cái gì đó tương tự nhưng tôi bị mắc kẹt. – user1919

Trả lời

4

Tôi nghĩ rằng bạn là chặt chẽ. Trong hàm onEachFeature của bạn, bạn nên lưu trữ tính năng đã được nhấp để bạn có thể bật/tắt tính năng chỉnh sửa trong trình xử lý nhấp chuột.

var selectedFeature = null; 
//edit the targeted polygon 
function onEachFeature (feature, layer) { 
    editableLayers.addLayer(layer); 
    layer.on('click', function(e){ 
      if(selectedFeature) 
       selectedFeature.editing.disable(); 
      selectedFeature = e.target; 
      e.target.editing.enable(); 
    }); 
} 
+0

Vâng, nó hoạt động !!! Cảm ơn người đàn ông = D – Revocyl

Các vấn đề liên quan