私は、リーフレット プラグインを使用するアプリケーションBeta_Hereを使用しています。すべてのライブラリは、少数 (css 関連) を除いてローカルです。
アプリケーションライブの使用
最初のビュー: このアプリケーションは、ユーザーからの入力を取得し、それに応じて距離計算式を設定します....
2 番目のビュー : 9 などの入力を入力すると、2 番目のビューが読み込まれ、形状を描画できます。
序章
2 つのイメージ オーバーレイ (レイヤー) をロードするスクリプトをセットアップしました。右上から切り替えて、左下から描画または測定できます。
問題
図形を描画したり、画像にマーカーを配置したりすると、コントロールはほぼ完璧に機能しますが、レイヤーを切り替えると、問題が発生します....すべての図形が背景に移動するか、(消えたように見えます)
主な質問
図面が画像ではなくマップコンテナにバインドされていることがわかる方法がある場合、図面とマーカーを特定のレイヤー(imageoverlay)にバインドするにはどうすればよいですか.....(私がやっていると感じたら許してくださいレイヤーに関する知識が限られているため、何かばかげているので、ここで質問を思いつきました....
誰かがこの問題を解決する方法について考えている場合は、助けてください。または、あらゆる種類の参考資料をいただければ幸いです...お時間をいただきありがとうございます
作業スクリプト
var map = L.map('map', {
minZoom: 1,
maxZoom: 4,
center: [0, 0],
zoom: 0,
crs: L.CRS.Simple
});
// dimensions of the image
var w = 3200,
h = 1900,
mainurl = 'assets/img/isbimg.jpg';
childurl = 'assets/img/fjmap.png';
// calculate the edges of the image, in coordinate space
var southWest = map.unproject([0, h], map.getMaxZoom() - 1);
var northEast = map.unproject([w, 0], map.getMaxZoom() - 1);
var bounds = new L.LatLngBounds(southWest, northEast);
var featureGroup = L.featureGroup().addTo(map);
var drawControl = new L.Control.Draw({
edit: {
featureGroup: featureGroup
},
draw: {
polygon: true,
polyline: true,
rectangle: true,
circle: true,
marker: true
}
}).addTo(map);
map.on('draw:created', showPolygonArea);
map.on('draw:edited', showPolygonAreaEdited);
// add the image overlay,so that it covers the entire map
L.control.layers({
Main: L.imageOverlay(mainurl, bounds),
Child: L.imageOverlay(childurl, bounds)
}, null, { collapsed: false }).addTo(map);
L.control.nanomeasure({ nanometersPerPixel: 10000 }).addTo(map);
// tell leaflet that the map is exactly as big as the image
map.setMaxBounds(bounds);
L.tileLayer({
attribution: '<a href="http://smartminds.co">SmartMinds</a>',
maxZoom: 18
}).addTo(map);
//polygon area customization
function showPolygonAreaEdited(e) {
e.layers.eachLayer(function (layer) {
showPolygonArea({ layer: layer });
});
}
function showPolygonArea(e) {
var userInputCustom = prompt("Please enter image name : choose between a to f");
featureGroup.addLayer(e.layer);
e.layer.bindPopup("<div style='width:200px;height:200px;background-image: url(assets/img/" + userInputCustom + ".png);background-size: 195px 195px;;background-repeat: no-repeat;'></div>");
e.layer.openPopup();
}
});