Skip to content

Instantly share code, notes, and snippets.

@bentomas
Created January 21, 2011 07:40
Show Gist options
  • Save bentomas/789374 to your computer and use it in GitHub Desktop.
Save bentomas/789374 to your computer and use it in GitHub Desktop.
diff --git a/site/assets/javascript/polymaps.js b/site/assets/javascript/polymaps.js
index 1424d82..8b88b68 100644
--- a/site/assets/javascript/polymaps.js
+++ b/site/assets/javascript/polymaps.js
@@ -372,6 +372,7 @@ po.map = function() {
zoomFraction = 0,
zoomFactor = 1, // Math.pow(2, zoomFraction)
zoomRange = [1, 18],
+ loadNewTiles = true,
angle = 0,
angleCos = 1, // Math.cos(angle)
angleSin = 0, // Math.sin(angle)
@@ -428,6 +429,12 @@ po.map = function() {
};
};
+ map.loadNewTiles = function(x) {
+ if (!arguments.length) return loadNewTiles;
+ loadNewTiles = x;
+ return map;
+ };
+
map.pointLocation = function(p) {
var k = 45 / Math.pow(2, zoom + zoomFraction - 3),
dx = (p.x - sizeRadius.x) * k,
@@ -813,6 +820,14 @@ po.layer = function(load, unload) {
c0.zoom = c1.zoom = c2.zoom = c3.zoom += tileLevel;
}
+ if (!map.loadNewTiles()) {
+ // position tiles
+ positionTiles(cache.locks());
+
+ layer.dispatch({type: "move"});
+ return;
+ }
+
// tile-specific projection
function projection(c) {
var zoom = c.zoom,
@@ -832,6 +847,18 @@ po.layer = function(load, unload) {
};
}
+ function positionTiles(locks) {
+ // position tiles
+ for (var key in locks) {
+ var t = locks[key],
+ k = Math.pow(2, t.level = t.zoom - tileCenter.zoom);
+ t.element.setAttribute("transform", "translate("
+ + (t.x = tileSize.x * (t.column - tileCenter.column * k)) + ","
+ + (t.y = tileSize.y * (t.row - tileCenter.row * k)) + ")");
+ }
+ }
+
+
// record which tiles are visible
var oldLocks = cache.locks(), newLocks = {};
@@ -911,14 +938,7 @@ po.layer = function(load, unload) {
}
}
- // position tiles
- for (var key in newLocks) {
- var t = newLocks[key],
- k = Math.pow(2, t.level = t.zoom - tileCenter.zoom);
- t.element.setAttribute("transform", "translate("
- + (t.x = tileSize.x * (t.column - tileCenter.column * k)) + ","
- + (t.y = tileSize.y * (t.row - tileCenter.row * k)) + ")");
- }
+ positionTiles(newLocks);
// remove tiles that are no longer visible
for (var key in oldLocks) {
@@ -2282,3 +2302,4 @@ po.stylist = function() {
return stylist;
};
})(org.polymaps);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment