0

added separate 'zoomLevels' JS config var for marker positioning use (closes #401)

This commit is contained in:
Aaron Griffith
2011-07-31 12:38:19 -04:00
parent ebd3497a5f
commit 30a8b851b6
4 changed files with 17 additions and 9 deletions

View File

@@ -534,7 +534,7 @@ var overviewer = {
// the width and height of all the highest-zoom tiles combined, // the width and height of all the highest-zoom tiles combined,
// inverted // inverted
var perPixel = 1.0 / (overviewerConfig.CONST.tileSize * var perPixel = 1.0 / (overviewerConfig.CONST.tileSize *
Math.pow(2, overviewerConfig.map.maxZoom)); Math.pow(2, overviewerConfig.map.zoomLevels));
// This information about where the center column is may change with // This information about where the center column is may change with
// a different drawing implementation -- check it again after any // a different drawing implementation -- check it again after any
@@ -542,13 +542,13 @@ var overviewer = {
// point (0, 0, 127) is at (0.5, 0.0) of tile (tiles/2 - 1, tiles/2) // point (0, 0, 127) is at (0.5, 0.0) of tile (tiles/2 - 1, tiles/2)
// so the Y coordinate is at 0.5, and the X is at 0.5 - // so the Y coordinate is at 0.5, and the X is at 0.5 -
// ((tileSize / 2) / (tileSize * 2^maxZoom)) // ((tileSize / 2) / (tileSize * 2^zoomLevels))
// or equivalently, 0.5 - (1 / 2^(maxZoom + 1)) // or equivalently, 0.5 - (1 / 2^(zoomLevels + 1))
var lng = 0.5 - (1.0 / Math.pow(2, overviewerConfig.map.maxZoom + 1)); var lng = 0.5 - (1.0 / Math.pow(2, overviewerConfig.map.zoomLevels + 1));
var lat = 0.5; var lat = 0.5;
// the following metrics mimic those in ChunkRenderer.chunk_render // the following metrics mimic those in
// in "chunk.py" or, equivalently, chunk_render in src/iterate.c // chunk_render in src/iterate.c
// each block on X axis adds 12px to x and subtracts 6px from y // each block on X axis adds 12px to x and subtracts 6px from y
lng += 12 * x * perPixel; lng += 12 * x * perPixel;
@@ -586,11 +586,11 @@ var overviewer = {
// the width and height of all the highest-zoom tiles combined, // the width and height of all the highest-zoom tiles combined,
// inverted // inverted
var perPixel = 1.0 / (overviewerConfig.CONST.tileSize * var perPixel = 1.0 / (overviewerConfig.CONST.tileSize *
Math.pow(2, overviewerConfig.map.maxZoom)); Math.pow(2, overviewerConfig.map.zoomLevels));
// Revert base positioning // Revert base positioning
// See equivalent code in fromWorldToLatLng() // See equivalent code in fromWorldToLatLng()
lng -= 0.5 - (1.0 / Math.pow(2, overviewerConfig.map.maxZoom + 1)); lng -= 0.5 - (1.0 / Math.pow(2, overviewerConfig.map.zoomLevels + 1));
lat -= 0.5; lat -= 0.5;
// I'll admit, I plugged this into Wolfram Alpha: // I'll admit, I plugged this into Wolfram Alpha:

View File

@@ -75,6 +75,12 @@ var overviewerConfig = {
* This controls how close you can zoom in. * This controls how close you can zoom in.
*/ */
'maxZoom': {maxzoom}, 'maxZoom': {maxzoom},
/**
* This tells us how many total zoom levels Overviewer rendered.
* DO NOT change this, even if you change minZoom and maxZoom, because
* it's used for marker position calculations and map resizing.
*/
'zoomLevels': {zoomlevels},
/** /**
* Center on this point, in world coordinates. Should be an array, ex: * Center on this point, in world coordinates. Should be an array, ex:
* [0,0,0] * [0,0,0]

View File

@@ -114,6 +114,8 @@ class MapGen(object):
"{minzoom}", str(0)) "{minzoom}", str(0))
config = config.replace( config = config.replace(
"{maxzoom}", str(zoomlevel)) "{maxzoom}", str(zoomlevel))
config = config.replace(
"{zoomlevels}", str(zoomlevel))
config = config.replace("{spawn_coords}", config = config.replace("{spawn_coords}",
json.dumps(list(self.world.spawn))) json.dumps(list(self.world.spawn)))

View File

@@ -120,7 +120,7 @@ class QuadtreeGen(object):
indexfile = os.path.join(self.destdir, "overviewerConfig.js") indexfile = os.path.join(self.destdir, "overviewerConfig.js")
if not os.path.exists(indexfile): if not os.path.exists(indexfile):
return -1 return -1
matcher = re.compile(r"maxZoom.*:\s*(\d+)") matcher = re.compile(r"zoomLevels(?:\'|\")\s*:\s*(\d+)")
p = -1 p = -1
for line in open(indexfile, "r"): for line in open(indexfile, "r"):
res = matcher.search(line) res = matcher.search(line)