我正在使用使用传单插件的应用程序Beta_Here,所有库都是本地的,除了少数(css 相关)
应用程序的使用
第一视图:此应用程序从用户那里获取输入并相应地设置距离计算公式....
第二视图:输入例如 9 后,将加载第二视图,我们可以在其中绘制形状....
介绍
我已经设置了将加载两个图像覆盖(图层)的脚本,我们可以从右上角切换它们,我们可以从左下角绘制或测量......
问题
当我们在图像上绘制形状或放置标记时,控件几乎可以完美运行,但是当我们切换图层时,问题就出现了……所有形状都转到背景或(似乎它们消失了)
主要问题
如果有办法我们可以看到绘图不是与图像绑定而是与地图容器绑定,我们如何将绘图和标记绑定到特定图层(图像覆盖)......(如果你觉得我在做,请原谅我一些愚蠢的事情,因为我对图层的了解有限,所以我在这里提出了我的问题....
如果有人知道如何解决这个问题,请提供帮助或任何形式的参考将不胜感激......感谢您的时间
工作脚本
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();
}
});