diff --git a/overviewer_core/data/js_src/overviewer.js b/overviewer_core/data/js_src/overviewer.js index 559376b..cf9a65f 100644 --- a/overviewer_core/data/js_src/overviewer.js +++ b/overviewer_core/data/js_src/overviewer.js @@ -39,7 +39,7 @@ overviewer.collections = { /** * When switching regionsets, where should we zoom to? - * Defaults to spawn. Stored as map of world names to [latlng, zoom] + * Defaults to spawn. Stored as map of maps: world names to layer names to [latlng, zoom] */ 'centers': {}, diff --git a/overviewer_core/data/js_src/util.js b/overviewer_core/data/js_src/util.js index cb0e6b2..52643af 100644 --- a/overviewer_core/data/js_src/util.js +++ b/overviewer_core/data/js_src/util.js @@ -142,8 +142,11 @@ overviewer.util = { // save current view for the current_world - overviewer.collections.centers[overviewer.current_world][0] = overviewer.map.getCenter(); - overviewer.collections.centers[overviewer.current_world][1] = overviewer.map.getZoom(); + let current_center = [overviewer.map.getCenter(), overviewer.map.getZoom()]; + let current_layer = overviewer.current_layer[overviewer.current_world] || + Object.values(overviewer.collections.mapTypes[overviewer.current_world])[0]; + let layer_name = current_layer.tileSetConfig.path; + overviewer.collections.centers[overviewer.current_world][layer_name] = current_center; overviewer.layerCtrl.remove(); @@ -190,17 +193,15 @@ overviewer.util = { } } - var center = overviewer.collections.centers[selected_world]; + let selected_layer_name = overviewer.collections.mapTypes[selected_world] && overviewer.current_layer[selected_world] ? + overviewer.current_layer[selected_world].tileSetConfig.path : + Object.keys(overviewer.collections.mapTypes[selected_world])[0]; + + let center = overviewer.collections.centers[selected_world][selected_layer_name]; overviewer.map.setView(center[0], center[1]); 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.path]); - } else { - 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][selected_layer_name]); }, onAdd: function() { console.log("onAdd mycontrol"); @@ -406,12 +407,15 @@ overviewer.util = { myLayer["tileSetConfig"] = obj; + if (!overviewer.collections.centers[obj.world]) { + overviewer.collections.centers[obj.world] = {}; + } if (typeof(obj.center) == "object") { var latlng = overviewer.util.fromWorldToLatLng(obj.center[0], obj.center[1], obj.center[2], obj); - overviewer.collections.centers[obj.world] = [ latlng, obj.defaultZoom ]; + overviewer.collections.centers[obj.world][obj.path] = [ latlng, obj.defaultZoom ]; } else { - overviewer.collections.centers[obj.world] = [ [0, 0], obj.defaultZoom ]; + overviewer.collections.centers[obj.world][obj.path] = [ [0, 0], obj.defaultZoom ]; } }); @@ -423,7 +427,8 @@ overviewer.util = { .addTo(overviewer.map); overviewer.current_world = overviewerConfig.worlds[0]; - let center = overviewer.collections.centers[overviewer.current_world]; + let default_layer_name = Object.keys(overviewer.collections.mapTypes[overviewer.current_world])[0]; + let center = overviewer.collections.centers[overviewer.current_world][default_layer_name]; overviewer.map.setView(center[0], center[1]); if (!overviewer.util.initHash()) {