From 57894fa174817e08bf7a87170427b10a6db9e837 Mon Sep 17 00:00:00 2001 From: Andrew Mager Date: Thu, 24 Mar 2011 09:09:26 -0700 Subject: [PATCH 1/2] Added Bing maps SSL example --- examples/bing-ssl/map.js | 71 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 examples/bing-ssl/map.js diff --git a/examples/bing-ssl/map.js b/examples/bing-ssl/map.js new file mode 100644 index 0000000..1abd19c --- /dev/null +++ b/examples/bing-ssl/map.js @@ -0,0 +1,71 @@ +var po = org.polymaps; + +var div = document.getElementById("map"); + +var map = po.map() + .container(div.appendChild(po.svg("svg"))) + .add(po.interact()) + .add(po.hash()); + +/* + * Load the "AerialWithLabels" metadata. "Aerial" and "Road" also work. For more + * information about the Imagery Metadata service, see + * http://msdn.microsoft.com/en-us/library/ff701716.aspx + * You should register for your own key at https://www.bingmapsportal.com/. + */ +var script = document.createElement("script"); +script.setAttribute("type", "text/javascript"); +script.setAttribute("src", "https://dev.virtualearth.net" + + "/REST/V1/Imagery/Metadata/Road" + + "?key=AmT-ZC3HPevQq5IBJ7v8qiDUxrojNaqbW1zBsKF0oMNEs53p7Nk5RlAuAmwSG7bg" + + "&jsonp=callback"); +document.body.appendChild(script); + +function callback(data) { + + /* Display each resource as an image layer. */ + var resourceSets = data.resourceSets; + for (var i = 0; i < resourceSets.length; i++) { + var resources = data.resourceSets[i].resources; + for (var j = 0; j < resources.length; j++) { + var resource = resources[j]; + map.add(po.image() + .url(template(resource.imageUrl, resource.imageUrlSubdomains))) + .tileSize({x: resource.imageWidth, y: resource.imageHeight}); + } + } + + /* Display brand logo. */ + document.getElementById("logo").src = data.brandLogoUri; + + /* Display copyright notice. */ + document.getElementById("copy").appendChild(document.createTextNode(data.copyright)); + + /* Display compass control. */ + map.add(po.compass() + .pan("none")); + +} + +/** Returns a Bing URL template given a string and a list of subdomains. */ +function template(url, subdomains) { + var n = subdomains.length, + salt = ~~(Math.random() * n); // per-session salt + + /** Returns the given coordinate formatted as a 'quadkey'. */ + function quad(column, row, zoom) { + var key = ""; + for (var i = 1; i <= zoom; i++) { + key += (((row >> zoom - i) & 1) << 1) | ((column >> zoom - i) & 1); + } + return key; + } + + return function(c) { + var quadKey = quad(c.column, c.row, c.zoom), + server = Math.abs(salt + c.column + c.row + c.zoom) % n; + return url + .replace("{quadkey}", quadKey) + .replace("{subdomain}", subdomains[server]); + }; +} From ff2cdd2b77c9a30b12540d6a97cdc491b75bfcc1 Mon Sep 17 00:00:00 2001 From: Andrew Mager Date: Thu, 24 Mar 2011 09:36:53 -0700 Subject: [PATCH 2/2] Replacing template URL with https --- examples/bing-ssl/map.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/bing-ssl/map.js b/examples/bing-ssl/map.js index 1abd19c..efa66cd 100644 --- a/examples/bing-ssl/map.js +++ b/examples/bing-ssl/map.js @@ -30,7 +30,7 @@ function callback(data) { for (var j = 0; j < resources.length; j++) { var resource = resources[j]; map.add(po.image() - .url(template(resource.imageUrl, resource.imageUrlSubdomains))) + .url(template(resource.imageUrl.replace(/^http:/, "https:"), resource.imageUrlSubdomains))) .tileSize({x: resource.imageWidth, y: resource.imageHeight}); } }