aboutsummaryrefslogtreecommitdiffstats
path: root/web/js/map-bing-ol.js
diff options
context:
space:
mode:
Diffstat (limited to 'web/js/map-bing-ol.js')
-rw-r--r--web/js/map-bing-ol.js82
1 files changed, 24 insertions, 58 deletions
diff --git a/web/js/map-bing-ol.js b/web/js/map-bing-ol.js
index 059a5e67e..9406997f9 100644
--- a/web/js/map-bing-ol.js
+++ b/web/js/map-bing-ol.js
@@ -1,6 +1,4 @@
-var tile_base = [ [ '', 'a-', 'b-', 'c-' ], '//{S}tilma.mysociety.org/sv' ];
-
-function set_map_config(perm) {
+function _set_map_config() {
var permalink_id;
if ($('#map_permalink').length) {
permalink_id = 'map_permalink';
@@ -23,52 +21,22 @@ function set_map_config(perm) {
if ( fixmystreet.page == 'report' ) {
fixmystreet.controls.push( new OpenLayers.Control.PermalinkFMS('key-tool-problems-nearby', '/around') );
}
+}
- if (fixmystreet.map_type) {
- tile_base = fixmystreet.map_type;
- }
- fixmystreet.map_type = OpenLayers.Layer.BingUK;
+function set_map_config(perm) {
+ _set_map_config();
+ fixmystreet.map_type = OpenLayers.Layer.Bing;
}
-OpenLayers.Layer.BingUK = OpenLayers.Class(OpenLayers.Layer.XYZ, {
+OpenLayers.Layer.Bing = OpenLayers.Class(OpenLayers.Layer.XYZ, {
attributionTemplate: '${logo}${copyrights}',
- uk_bounds: [
- new OpenLayers.Bounds(-6.6, 49.8, 1.102680, 51),
- new OpenLayers.Bounds(-5.4, 51, 2.28, 54.94),
- new OpenLayers.Bounds(-5.85, 54.94, -1.15, 55.33),
- new OpenLayers.Bounds(-9.35, 55.33, -0.7, 60.98)
- ],
- in_uk: function(c) {
- c = c.clone();
- c.transform(
- fixmystreet.map.getProjectionObject(),
- new OpenLayers.Projection("EPSG:4326")
- );
- if ( this.uk_bounds[0].contains(c.lon, c.lat) || this.uk_bounds[1].contains(c.lon, c.lat) || this.uk_bounds[2].contains(c.lon, c.lat) || this.uk_bounds[3].contains(c.lon, c.lat) ) {
- return true;
- }
- return false;
- },
-
setMap: function() {
OpenLayers.Layer.XYZ.prototype.setMap.apply(this, arguments);
this.updateAttribution();
- this.map.events.register("moveend", this, this.updateAttribution);
},
- updateAttribution: function() {
- var z = this.map.getZoom() + this.zoomOffset;
- var copyrights;
- var logo = '';
- var c = this.map.getCenter();
- var in_uk = c ? this.in_uk(c) : true;
- if (z >= 16 && in_uk) {
- copyrights = 'Contains Ordnance Survey data © Crown copyright and database right 2010';
- } else {
- logo = '<a href="https://www.bing.com/maps/"><img border=0 src="//dev.virtualearth.net/Branding/logo_powered_by.png"></a>';
- copyrights = '&copy; 2011 <a href="https://www.bing.com/maps/">Microsoft</a>. &copy; AND, Navteq, Ordnance Survey';
- }
+ _updateAttribution: function(copyrights, logo) {
this.attribution = OpenLayers.String.format(this.attributionTemplate, {
logo: logo,
copyrights: copyrights
@@ -81,6 +49,12 @@ OpenLayers.Layer.BingUK = OpenLayers.Class(OpenLayers.Layer.XYZ, {
}
},
+ updateAttribution: function() {
+ var copyrights = '&copy; 2011 <a href="https://www.bing.com/maps/">Microsoft</a>. &copy; AND, Navteq';
+ var logo = '<a href="https://www.bing.com/maps/"><img border=0 src="//dev.virtualearth.net/Branding/logo_powered_by.png"></a>';
+ this._updateAttribution(copyrights, logo);
+ },
+
initialize: function(name, options) {
var url = [];
options = OpenLayers.Util.extend({
@@ -89,7 +63,6 @@ OpenLayers.Layer.BingUK = OpenLayers.Class(OpenLayers.Layer.XYZ, {
numZoomLevels: 19,
sphericalMercator: true,
buffer: 0
- //attribution: "© Microsoft / OS 2010"
}, options);
var newArguments = [name, url, options];
OpenLayers.Layer.XYZ.prototype.initialize.apply(this, newArguments);
@@ -121,23 +94,7 @@ OpenLayers.Layer.BingUK = OpenLayers.Class(OpenLayers.Layer.XYZ, {
OpenLayers.Util.indexOf(this.serverResolutions, res) :
this.map.getZoom() + this.zoomOffset;
- var url;
- var in_uk = this.in_uk(bounds.getCenterLonLat());
- if (z >= 16 && in_uk) {
- url = [];
- for (var i=0; i< tile_base[0].length; i++) {
- url.push( tile_base[1].replace('{S}', tile_base[0][i]) + "/${z}/${x}/${y}.png" );
- }
- } else {
- var type = '';
- if (z > 10 && in_uk) { type = '&productSet=mmOS'; }
- url = [
- "//ecn.t0.tiles.virtualearth.net/tiles/r${id}.png?g=701" + type,
- "//ecn.t1.tiles.virtualearth.net/tiles/r${id}.png?g=701" + type,
- "//ecn.t2.tiles.virtualearth.net/tiles/r${id}.png?g=701" + type,
- "//ecn.t3.tiles.virtualearth.net/tiles/r${id}.png?g=701" + type
- ];
- }
+ var url = this.get_urls(bounds, z);
var s = '' + x + y + z;
url = this.selectUrl(s, url);
@@ -146,5 +103,14 @@ OpenLayers.Layer.BingUK = OpenLayers.Class(OpenLayers.Layer.XYZ, {
return path;
},
- CLASS_NAME: "OpenLayers.Layer.BingUK"
+ get_urls: function(bounds, z) {
+ return [
+ "//ecn.t0.tiles.virtualearth.net/tiles/r${id}.png?g=3293",
+ "//ecn.t1.tiles.virtualearth.net/tiles/r${id}.png?g=3293",
+ "//ecn.t2.tiles.virtualearth.net/tiles/r${id}.png?g=3293",
+ "//ecn.t3.tiles.virtualearth.net/tiles/r${id}.png?g=3293"
+ ];
+ },
+
+ CLASS_NAME: "OpenLayers.Layer.Bing"
});