Resize change bounding boxes on a zoom change

This commit is contained in:
Tom Hughes 2018-10-14 12:28:26 +01:00
parent 5e76ec80ce
commit 6b194ed627

View file

@ -89,36 +89,30 @@ OSM.History = function(map) {
});
}
function updateMap() {
var changesets = [];
function updateBounds() {
group.clearLayers();
var changesets = [];
changesets.forEach(function(changeset) {
var bottomLeft = map.project(L.latLng(changeset.bbox.minlat, changeset.bbox.minlon)),
topRight = map.project(L.latLng(changeset.bbox.maxlat, changeset.bbox.maxlon)),
width = topRight.x - bottomLeft.x,
height = bottomLeft.y - topRight.y,
minSize = 20; // Min width/height of changeset in pixels
$("[data-changeset]").each(function () {
var changeset = $(this).data('changeset');
if (changeset.bbox) {
var bottomLeft = map.project(L.latLng(changeset.bbox.minlat, changeset.bbox.minlon)),
topRight = map.project(L.latLng(changeset.bbox.maxlat, changeset.bbox.maxlon)),
width = topRight.x - bottomLeft.x,
height = bottomLeft.y - topRight.y,
minSize = 20; // Min width/height of changeset in pixels
if (width < minSize) {
bottomLeft.x -= ((minSize - width) / 2);
topRight.x += ((minSize - width) / 2);
}
if (height < minSize) {
bottomLeft.y += ((minSize - height) / 2);
topRight.y -= ((minSize - height) / 2);
}
var bounds = [map.unproject(bottomLeft),
map.unproject(topRight)];
changeset.bounds = L.latLngBounds(bounds);
changesets.push(changeset);
if (width < minSize) {
bottomLeft.x -= ((minSize - width) / 2);
topRight.x += ((minSize - width) / 2);
}
if (height < minSize) {
bottomLeft.y += ((minSize - height) / 2);
topRight.y -= ((minSize - height) / 2);
}
changeset.bounds = L.latLngBounds(map.unproject(bottomLeft),
map.unproject(topRight));
});
changesets.sort(function (a, b) {
@ -132,6 +126,16 @@ OSM.History = function(map) {
rect.id = changeset.id;
rect.addTo(group);
}
}
function updateMap() {
changesets = $("[data-changeset]").map(function (index,element) {
return $(element).data('changeset');
}).get().filter(function (changeset) {
return changeset.bbox;
});
updateBounds();
if (window.location.pathname !== '/history') {
var bounds = group.getBounds();
@ -151,6 +155,8 @@ OSM.History = function(map) {
map.on("moveend", update);
}
map.on("zoomend", updateBounds);
update();
};