From d6fa8c1e26aecede955ba1dcfe4ce0b45571cfcf Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Fri, 21 Mar 2014 17:43:54 -0700 Subject: [PATCH] Support quartile scheme for any imagery source (fixes #2112) --- js/id/renderer/background_source.js | 32 ++++++++++++----------------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/js/id/renderer/background_source.js b/js/id/renderer/background_source.js index e0a0cb9c5..444082dc1 100644 --- a/js/id/renderer/background_source.js +++ b/js/id/renderer/background_source.js @@ -35,6 +35,17 @@ iD.BackgroundSource = function(data) { .replace(/\{switch:([^}]+)\}/, function(s, r) { var subdomains = r.split(','); return subdomains[(coord[0] + coord[1]) % subdomains.length]; + }) + .replace('{u}', function() { + var u = ''; + for (var zoom = coord[2]; zoom > 0; zoom--) { + var b = 0; + var mask = 1 << (zoom - 1); + if ((coord[0] & mask) !== 0) b++; + if ((coord[1] & mask) !== 0) b += 2; + u += b.toString(); + } + return u; }); }; @@ -63,6 +74,8 @@ iD.BackgroundSource.Bing = function(data, dispatch) { // http://msdn.microsoft.com/en-us/library/ff701716.aspx // http://msdn.microsoft.com/en-us/library/ff701701.aspx + data.template = 'https://ecn.t{switch:0,1,2,3}.tiles.virtualearth.net/tiles/a{u}.jpeg?g=587&mkt=en-gb&n=z'; + var bing = iD.BackgroundSource(data), key = 'Arzdiw4nlOJzRwOz__qailc8NiR31Tt51dN2D7cm57NrnceZnCpgOkmJhNpGoppU', // Same as P2 and JOSM url = 'https://dev.virtualearth.net/REST/v1/Imagery/Metadata/Aerial?include=ImageryProviders&key=' + @@ -84,25 +97,6 @@ iD.BackgroundSource.Bing = function(data, dispatch) { dispatch.change(); }); - var template = 'https://ecn.t{t}.tiles.virtualearth.net/tiles/a{u}.jpeg?g=587&mkt=en-gb&n=z', - subdomains = [0, 1, 2, 3]; - - bing.url = function(coord) { - var u = ''; - - for (var zoom = coord[2]; zoom > 0; zoom--) { - var b = 0; - var mask = 1 << (zoom - 1); - if ((coord[0] & mask) !== 0) b++; - if ((coord[1] & mask) !== 0) b += 2; - u += b.toString(); - } - - return template - .replace('{t}', subdomains[(coord[0] + coord[1]) % 4]) - .replace('{u}', u); - }; - bing.copyrightNotices = function(zoom, extent) { zoom = Math.min(zoom, 21); return providers.filter(function(provider) {