0

Merge pull request #1524 from CounterPillow/overlay-fix

web: fix overlays showing up for all base layers
This commit is contained in:
Nicolas F
2019-02-28 13:39:31 +01:00
committed by GitHub

View File

@@ -149,10 +149,21 @@ overviewer.util = {
overviewer.layerCtrl.remove(); overviewer.layerCtrl.remove();
var base_layers = {};
var overlay_layers = {};
for (var bl in overviewer.collections.mapTypes[selected_world]) {
var bl_o = overviewer.collections.mapTypes[selected_world][bl];
base_layers[bl_o.tileSetConfig.name] = bl_o;
}
for (var ol in overviewer.collections.overlays[selected_world]) {
var ol_o = overviewer.collections.overlays[selected_world][ol];
overlay_layers[ol_o.tileSetConfig.name] = ol_o;
}
overviewer.layerCtrl = L.control.layers( overviewer.layerCtrl = L.control.layers(
overviewer.collections.mapTypes[selected_world], base_layers,
overviewer.collections.overlays[selected_world], overlay_layers,
{collapsed: false}) {collapsed: false})
.addTo(overviewer.map); .addTo(overviewer.map);
for (var world_name in overviewer.collections.mapTypes) { for (var world_name in overviewer.collections.mapTypes) {
@@ -187,7 +198,7 @@ overviewer.util = {
overviewer.current_world = selected_world; overviewer.current_world = selected_world;
if (overviewer.collections.mapTypes[selected_world] && overviewer.current_layer[selected_world]) { if (overviewer.collections.mapTypes[selected_world] && overviewer.current_layer[selected_world]) {
overviewer.map.addLayer(overviewer.collections.mapTypes[selected_world][overviewer.current_layer[selected_world].tileSetConfig.name]); overviewer.map.addLayer(overviewer.collections.mapTypes[selected_world][overviewer.current_layer[selected_world].tileSetConfig.path]);
} else { } else {
var tset_name = Object.keys(overviewer.collections.mapTypes[selected_world])[0] var tset_name = Object.keys(overviewer.collections.mapTypes[selected_world])[0]
overviewer.map.addLayer(overviewer.collections.mapTypes[selected_world][tset_name]); overviewer.map.addLayer(overviewer.collections.mapTypes[selected_world][tset_name]);
@@ -221,7 +232,6 @@ overviewer.util = {
tsc.marker_groups[marker_group].remove(); tsc.marker_groups[marker_group].remove();
} }
} }
} }
overviewer.current_layer[overviewer.current_world] = ev.layer; overviewer.current_layer[overviewer.current_world] = ev.layer;
var ovconf = ev.layer.tileSetConfig; var ovconf = ev.layer.tileSetConfig;
@@ -273,6 +283,22 @@ overviewer.util = {
mg.addTo(overviewer.map); mg.addTo(overviewer.map);
} }
} }
// Update overlays
for (var olw in overviewer.collections.overlays) {
for (var ol in overviewer.collections.overlays[olw]) {
var ol_o = overviewer.collections.overlays[olw][ol];
if (ol_o.tileSetConfig.isOverlay.includes(ovconf.path)) {
if (!overviewer.util.isInLayerCtrl(overviewer.layerCtrl, ol_o)) {
overviewer.layerCtrl.addOverlay(ol_o, ol_o.tileSetConfig.name);
}
} else {
if (overviewer.util.isInLayerCtrl(overviewer.layerCtrl, ol_o)) {
overviewer.layerCtrl.removeLayer(ol_o);
}
}
}
}
overviewer.util.updateHash(); overviewer.util.updateHash();
}); });
@@ -324,9 +350,9 @@ overviewer.util = {
myLayer.getTileUrl = overviewer.util.getTileUrlGenerator(obj.path, obj.base, obj.imgextension); myLayer.getTileUrl = overviewer.util.getTileUrlGenerator(obj.path, obj.base, obj.imgextension);
if (obj.isOverlay) { if (obj.isOverlay) {
overviewer.collections.overlays[obj.world][obj.name] = myLayer; overviewer.collections.overlays[obj.world][obj.path] = myLayer;
} else { } else {
overviewer.collections.mapTypes[obj.world][obj.name] = myLayer; overviewer.collections.mapTypes[obj.world][obj.path] = myLayer;
} }
obj.marker_groups = undefined; obj.marker_groups = undefined;
@@ -765,7 +791,7 @@ overviewer.util = {
// default to (map-update friendly) negative zooms // default to (map-update friendly) negative zooms
zoom -= ovconf.maxZoom; zoom -= ovconf.maxZoom;
} }
overviewer.util.setHash(coordinates.x, coordinates.y, coordinates.z, zoom, currWorld, ovconf.name); overviewer.util.setHash(coordinates.x, coordinates.y, coordinates.z, zoom, currWorld, ovconf.path);
}, },
'goToHash': function() { 'goToHash': function() {
// Note: the actual data begins at coords[1], coords[0] is empty. // Note: the actual data begins at coords[1], coords[0] is empty.
@@ -785,6 +811,11 @@ overviewer.util = {
} }
var target_layer = overviewer.collections.mapTypes[world_name][tileset_name]; var target_layer = overviewer.collections.mapTypes[world_name][tileset_name];
if (!target_layer) {
var default_tset_name = Object.keys(
overviewer.collections.mapTypes[world_name])[0];
target_layer = overviewer.collections.mapTypes[world_name][default_tset_name];
}
var ovconf = target_layer.tileSetConfig; var ovconf = target_layer.tileSetConfig;
var latlngcoords = overviewer.util.fromWorldToLatLng(parseInt(coords[1]), var latlngcoords = overviewer.util.fromWorldToLatLng(parseInt(coords[1]),
@@ -872,5 +903,13 @@ overviewer.util = {
} }
return(urlBase + url); return(urlBase + url);
}; };
},
'isInLayerCtrl': function(ctrl, layer) {
for (var l in ctrl._layers) {
if (ctrl._layers[l].layer.tileSetConfig.path == layer.tileSetConfig.path) {
return true;
}
}
return false;
} }
}; };