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();
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.collections.mapTypes[selected_world],
overviewer.collections.overlays[selected_world],
{collapsed: false})
base_layers,
overlay_layers,
{collapsed: false})
.addTo(overviewer.map);
for (var world_name in overviewer.collections.mapTypes) {
@@ -187,7 +198,7 @@ overviewer.util = {
overviewer.current_world = 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 {
var tset_name = Object.keys(overviewer.collections.mapTypes[selected_world])[0]
overviewer.map.addLayer(overviewer.collections.mapTypes[selected_world][tset_name]);
@@ -221,7 +232,6 @@ overviewer.util = {
tsc.marker_groups[marker_group].remove();
}
}
}
overviewer.current_layer[overviewer.current_world] = ev.layer;
var ovconf = ev.layer.tileSetConfig;
@@ -273,6 +283,22 @@ overviewer.util = {
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();
});
@@ -324,9 +350,9 @@ overviewer.util = {
myLayer.getTileUrl = overviewer.util.getTileUrlGenerator(obj.path, obj.base, obj.imgextension);
if (obj.isOverlay) {
overviewer.collections.overlays[obj.world][obj.name] = myLayer;
overviewer.collections.overlays[obj.world][obj.path] = myLayer;
} else {
overviewer.collections.mapTypes[obj.world][obj.name] = myLayer;
overviewer.collections.mapTypes[obj.world][obj.path] = myLayer;
}
obj.marker_groups = undefined;
@@ -765,7 +791,7 @@ overviewer.util = {
// default to (map-update friendly) negative zooms
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() {
// 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];
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 latlngcoords = overviewer.util.fromWorldToLatLng(parseInt(coords[1]),
@@ -872,5 +903,13 @@ overviewer.util = {
}
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;
}
};