diff --git a/mapsense.js b/mapsense.js index 7ed53fd..78db79b 100644 --- a/mapsense.js +++ b/mapsense.js @@ -1232,7 +1232,8 @@ ms.geoJson = function(fetch) { pointRadius = 4.5, features, tileBackground = false, - selection; + selection, + zoomWhenLoaded; container.setAttribute("fill-rule", "evenodd"); clipPath.setAttribute("id", clipId); @@ -1381,6 +1382,11 @@ ms.geoJson = function(fetch) { if (scale == "fixed") { initialScale = "scale(" + Math.pow(2, tile.zoom - (tile.scale = geoJson.map().zoom())) + ")"; } + else if (scale == "relative") { + if (typeof zoomWhenLoaded == 'undefined') zoomWhenLoaded = tile.zoom; + tile.scale = geoJson.map().zoom(); + initialScale = "scale(" + Math.pow(.5, zoomWhenLoaded - tile.zoom) + ")"; + } var pointUpdate = d3.select(g) .selectAll("circle") diff --git a/src/GeoJson.js b/src/GeoJson.js index 391ddef..cc6dc76 100644 --- a/src/GeoJson.js +++ b/src/GeoJson.js @@ -12,7 +12,8 @@ ms.geoJson = function(fetch) { pointRadius = 4.5, features, tileBackground = false, - selection; + selection, + zoomWhenLoaded; container.setAttribute("fill-rule", "evenodd"); clipPath.setAttribute("id", clipId); @@ -161,6 +162,11 @@ ms.geoJson = function(fetch) { if (scale == "fixed") { initialScale = "scale(" + Math.pow(2, tile.zoom - (tile.scale = geoJson.map().zoom())) + ")"; } + else if (scale == "relative") { + if (typeof zoomWhenLoaded == 'undefined') zoomWhenLoaded = tile.zoom; + tile.scale = geoJson.map().zoom(); + initialScale = "scale(" + Math.pow(.5, zoomWhenLoaded - tile.zoom) + ")"; + } var pointUpdate = d3.select(g) .selectAll("circle")