リーフレットはremove()
とaddTo()
方法でツールバーを削除して追加することが可能になります。
2つのツールバーを作成するだけです。一つは、デフォルトL.Control.Draw
であり、もう一つは「描く」コンポーネントなしです:
self.drawControlFull = new L.Control.Draw();
self.drawControlEdit = new L.Control.Draw({
edit: {
featureGroup: editableLayers,
edit: false
},
draw: false
});
map.addControl(drawControlFull);
その後、必要に応じてそれらを削除/あなただけdraw:created
とdraw:deleted
イベントに耳を傾け、あなたが追加します。
map.on('draw:created', function(e) {
var type = e.layerType,
layer = e.layer;
self.drawControlFull.remove();
self.drawControlEdit.addTo(map);
editableLayers.addLayer(layer);
});
map.on('draw:deleted', function (e) {
self.drawControlEdit.remove();
self.drawControlFull.addTo(map);
});
このソリューションは、すべてのユースケースをカバーしているわけではありませんが、単なる例です。私はこのためにjsFiddleを作成しました。どのように動作するかを見ることができます。
私はこのアプローチを早く試みました。しかし、添付のスクリーンショットにエラーが表示されていました。 (質問を更新しました) – codejunkie
jsFiddleを作成してエラーを再現できますか?私のソリューションは最新バージョンのリーフレットとリーフレットを使用して動作します。古いバージョンを使用している可能性があります。このような場合は、カップルを変更する必要がありますが、それは似ています。 –
コードに複製する方法は次のとおりです。図形を作成します。そして、editをクリックすると、エラーが表示されます。その後、キャンセルをクリックします。 - >別のエラーが表示されます。 (クロムデバッガを使用してください) – codejunkie