2016-08-17 24 views
1

リーフレットとリーフレットを使ってマップを作成しています。地図上に(ユーザとして)矩形を描くと、次のコードは矩形のLatLng境界を書き出します。Leaflet.drawでポップアップを編集する方法

// add the newly drawn items to a layer 
    map.on('draw:created', function (e) { 
     var type = e.layerType, 
      layer = e.layer; 

     // binds things upon creation 
     if (type === 'rectangle') { 
      var bounds = layer.getBounds(); 
      layer.bindPopup(bounds.getNorthWest().toString() + "NW" + bounds.getSouthEast().toString() + "SE"); 
     } 

     drawnItems.addLayer(layer); 
    }); 

矩形がユーザーによって編集されたときに更新します。私はこのようなものは、 'draw:edited'イベントと '_popup.SetContent'を使って更新するべきだと思うが、LatLngは更新されない。

この2番目のコードブロックを追加すると、作成した最初の矩形のみを編集できるということも意味します。それは明らかに機能しませんが、私はなぜそれがわかりません。

答えて

2

私はそれを理解しました。 draw:editedイベントでは、メソッドを使用して、各レイヤーを反復してe.layersに、次にinstanceofを使用してレイヤータイプを確認する必要がありました。私はまた、古いポップアップを編集するのではなく、新しいポップアップをバインドしました。正しい方向に私を指しているためthis question about retrieving layer type on edit

// update LatLng value 
    map.on('draw:edited', function (e) { 
     var layers = e.layers; 

     layers.eachLayer(function (layer) { 
      // do whatever you want to each layer, here update LatLng 
      if (layer instanceof L.Rectangle) { 
       var bounds = layer.getBounds(); 
       layer.bindPopup(bounds.getNorthWest().toString() + " NW<br>" + bounds.getSouthEast().toString() + " SE"); 
      } 
     }); 
    }); 

ありがとう:

は、ここでもそれをより読みやすくするために、ポップアップで改行を持っているコード、です。

関連する問題