Merge branch 'master' into py-package
This commit is contained in:
@@ -194,6 +194,7 @@ var overviewer = {
|
||||
},
|
||||
mapTypeId: overviewer.util.getDefaultMapTypeId(),
|
||||
streetViewControl: false,
|
||||
overviewMapControl: true,
|
||||
zoomControl: overviewerConfig.map.controls.zoom,
|
||||
backgroundColor: overviewer.util.getMapTypeBackgroundColor(
|
||||
overviewer.util.getDefaultMapTypeId())
|
||||
@@ -225,27 +226,28 @@ var overviewer = {
|
||||
overviewer.collections.mapTypes[i].name,
|
||||
overviewer.collections.mapTypes[i]);
|
||||
}
|
||||
|
||||
// Make the link again whenever the map changes
|
||||
|
||||
// Jump to the hash if given
|
||||
overviewer.util.initHash();
|
||||
|
||||
// Add live hash update listeners
|
||||
// Note: It is important to add them after jumping to the hash
|
||||
google.maps.event.addListener(overviewer.map, 'dragend', function() {
|
||||
overviewer.util.updateHash();
|
||||
});
|
||||
|
||||
google.maps.event.addListener(overviewer.map, 'zoom_changed', function() {
|
||||
overviewer.util.updateHash();
|
||||
});
|
||||
|
||||
// Make the link again whenever the map changes
|
||||
google.maps.event.addListener(overviewer.map, 'maptypeid_changed', function() {
|
||||
$('#'+overviewerConfig.CONST.mapDivId).css(
|
||||
'background-color', overviewer.util.getMapTypeBackgroundColor(
|
||||
overviewer.map.getMapTypeId()));
|
||||
//smuggled this one in here for maptypeid hash generation --CounterPillow
|
||||
overviewer.util.updateHash();
|
||||
});
|
||||
|
||||
// Add live hash update listener
|
||||
google.maps.event.addListener(overviewer.map, 'dragend', function() {
|
||||
overviewer.util.updateHash();
|
||||
});
|
||||
google.maps.event.addListener(overviewer.map, 'zoom_changed', function() {
|
||||
overviewer.util.updateHash();
|
||||
});
|
||||
// Jump to the hash if given
|
||||
overviewer.util.initHash();
|
||||
|
||||
|
||||
// We can now set the map to use the 'coordinate' map type
|
||||
overviewer.map.setMapTypeId(overviewer.util.getDefaultMapTypeId());
|
||||
},
|
||||
/**
|
||||
* Read through overviewer.collections.markerDatas and create Marker
|
||||
@@ -782,6 +784,8 @@ var overviewer = {
|
||||
'initHash': function() {
|
||||
if(window.location.hash.split("/").length > 1) {
|
||||
overviewer.util.goToHash();
|
||||
// Clean up the hash.
|
||||
overviewer.util.updateHash();
|
||||
|
||||
// Add a marker indicating the user-supplied position
|
||||
var coordinates = overviewer.util.fromLatLngToWorld(overviewer.map.getCenter().lat(), overviewer.map.getCenter().lng());
|
||||
@@ -791,14 +795,15 @@ var overviewer = {
|
||||
'y': coordinates.y,
|
||||
'z': coordinates.z,
|
||||
'type': 'querypos'}]);
|
||||
}
|
||||
}
|
||||
},
|
||||
'setHash': function(x, y, z, zoom) {
|
||||
window.location.replace("#/" + Math.floor(x) + "/" + Math.floor(y) + "/" + Math.floor(z) + "/" + zoom);
|
||||
'setHash': function(x, y, z, zoom, maptype) {
|
||||
window.location.replace("#/" + Math.floor(x) + "/" + Math.floor(y) + "/" + Math.floor(z) + "/" + zoom + "/" + maptype);
|
||||
},
|
||||
'updateHash': function() {
|
||||
var coordinates = overviewer.util.fromLatLngToWorld(overviewer.map.getCenter().lat(), overviewer.map.getCenter().lng());
|
||||
var zoom = overviewer.map.getZoom();
|
||||
var maptype = overviewer.map.getMapTypeId();
|
||||
if (zoom == overviewerConfig.map.maxZoom) {
|
||||
zoom = 'max';
|
||||
} else if (zoom == overviewerConfig.map.minZoom) {
|
||||
@@ -807,12 +812,22 @@ var overviewer = {
|
||||
// default to (map-update friendly) negative zooms
|
||||
zoom -= overviewerConfig.map.maxZoom;
|
||||
}
|
||||
overviewer.util.setHash(coordinates.x, coordinates.y, coordinates.z, zoom);
|
||||
overviewer.util.setHash(coordinates.x, coordinates.y, coordinates.z, zoom, maptype);
|
||||
},
|
||||
'goToHash': function() {
|
||||
// Note: the actual data begins at coords[1], coords[0] is empty.
|
||||
var coords = window.location.hash.split("/");
|
||||
var latlngcoords = overviewer.util.fromWorldToLatLng(parseInt(coords[1]), parseInt(coords[2]), parseInt(coords[3]));
|
||||
var zoom = coords[4];
|
||||
var zoom;
|
||||
var maptype = '';
|
||||
// The if-statements try to prevent unexpected behaviour when using incomplete hashes, e.g. older links
|
||||
if (coords.length > 4) {
|
||||
zoom = coords[4];
|
||||
}
|
||||
if (coords.length > 5) {
|
||||
maptype = coords[5];
|
||||
}
|
||||
|
||||
if (zoom == 'max') {
|
||||
zoom = overviewerConfig.map.maxZoom;
|
||||
} else if (zoom == 'min') {
|
||||
@@ -827,6 +842,14 @@ var overviewer = {
|
||||
zoom = overviewerConfig.map.defaultZoom;
|
||||
}
|
||||
}
|
||||
// If the maptype isn't set, set the default one.
|
||||
if (maptype == '') {
|
||||
// We can now set the map to use the 'coordinate' map type
|
||||
overviewer.map.setMapTypeId(overviewer.util.getDefaultMapTypeId());
|
||||
} else {
|
||||
overviewer.map.setMapTypeId(maptype);
|
||||
}
|
||||
|
||||
overviewer.map.setCenter(latlngcoords);
|
||||
overviewer.map.setZoom(zoom);
|
||||
},
|
||||
|
||||
@@ -79,7 +79,7 @@ var overviewerConfig = {
|
||||
* Set to true to turn on debug mode, which adds a grid to the map along
|
||||
* with co-ordinates and a bunch of console output.
|
||||
*/
|
||||
'debug': false,
|
||||
'debug': false
|
||||
},
|
||||
/**
|
||||
* Group definitions for objects that are partially selectable (signs and
|
||||
|
||||
@@ -246,7 +246,7 @@ class QuadtreeGen(object):
|
||||
regiony = regiony_
|
||||
_, _, c, mcr = get_region((regionx, regiony),(None,None,None,None))
|
||||
|
||||
if c is not None and mcr.chunkExists(chunkx,chunky):
|
||||
if c is not None and mcr.chunkExists(chunkx,chunky):
|
||||
chunklist.append((col, row, chunkx, chunky, c))
|
||||
|
||||
return chunklist
|
||||
@@ -427,6 +427,8 @@ class QuadtreeGen(object):
|
||||
for col, row, chunkx, chunky, regionfile in chunks:
|
||||
# check region file mtime first.
|
||||
region,regionMtime = get_region_mtime(regionfile)
|
||||
if self.world.regionlist and region._filename not in self.world.regionlist:
|
||||
continue
|
||||
if regionMtime <= tile_mtime:
|
||||
continue
|
||||
|
||||
|
||||
@@ -78,7 +78,8 @@ class World(object):
|
||||
logging.info("Scanning regions")
|
||||
regionfiles = {}
|
||||
self.regions = {}
|
||||
for x, y, regionfile in self._iterate_regionfiles():
|
||||
self.regionlist = regionlist # a list of paths
|
||||
for x, y, regionfile in self._iterate_regionfiles():
|
||||
mcr = self.reload_region(regionfile)
|
||||
mcr.get_chunk_info()
|
||||
regionfiles[(x,y)] = (x,y,regionfile,mcr)
|
||||
@@ -277,16 +278,22 @@ class World(object):
|
||||
"""Returns an iterator of all of the region files, along with their
|
||||
coordinates
|
||||
|
||||
Note: the regionlist here will be used to determinte the size of the
|
||||
world.
|
||||
|
||||
Returns (regionx, regiony, filename)"""
|
||||
join = os.path.join
|
||||
if regionlist is not None:
|
||||
for path in regionlist:
|
||||
if path.endswith("\n"):
|
||||
path = path[:-1]
|
||||
path = path.strip()
|
||||
f = os.path.basename(path)
|
||||
if f.startswith("r.") and f.endswith(".mcr"):
|
||||
p = f.split(".")
|
||||
logging.debug("Using path %s from regionlist", f)
|
||||
yield (int(p[1]), int(p[2]), join(self.worlddir, 'region', f))
|
||||
else:
|
||||
logging.warning("Ignore path '%s' in regionlist", f)
|
||||
|
||||
else:
|
||||
for path in glob(os.path.join(self.worlddir, 'region') + "/r.*.*.mcr"):
|
||||
dirpath, f = os.path.split(path)
|
||||
|
||||
Reference in New Issue
Block a user