[9139] | 1 | /**
|
---|
| 2 | * Namespace: Util.OSM
|
---|
| 3 | */
|
---|
| 4 | OpenLayers.Util.OSM = {};
|
---|
| 5 |
|
---|
| 6 | /**
|
---|
| 7 | * Constant: MISSING_TILE_URL
|
---|
| 8 | * {String} URL of image to display for missing tiles
|
---|
| 9 | */
|
---|
| 10 | OpenLayers.Util.OSM.MISSING_TILE_URL = "http://openstreetmap.org/openlayers/img/404.png";
|
---|
| 11 |
|
---|
| 12 | /**
|
---|
| 13 | * Property: originalOnImageLoadError
|
---|
| 14 | * {Function} Original onImageLoadError function.
|
---|
| 15 | */
|
---|
| 16 | OpenLayers.Util.OSM.originalOnImageLoadError = OpenLayers.Util.onImageLoadError;
|
---|
| 17 |
|
---|
| 18 | /**
|
---|
| 19 | * Function: onImageLoadError
|
---|
| 20 | */
|
---|
| 21 | OpenLayers.Util.onImageLoadError = function() {
|
---|
| 22 | if (this.src.match(/^http:\/\/[abc]\.[a-z]+\.openstreetmap\.org\//)) {
|
---|
| 23 | this.src = OpenLayers.Util.OSM.MISSING_TILE_URL;
|
---|
[9641] | 24 | } if (this.src.match(/^http:\/\/[def]\.tah\.openstreetmap\.org\//) == null) {
|
---|
[9139] | 25 | OpenLayers.Util.OSM.originalOnImageLoadError;
|
---|
| 26 | }
|
---|
| 27 | };
|
---|
| 28 |
|
---|
[9382] | 29 | function get_balanced_urls(prefix, balancers, suffix) {
|
---|
| 30 | var urls = [];
|
---|
[9544] | 31 | for (var i=0; i < balancers.length; i++) {
|
---|
[9382] | 32 | urls.push(prefix + balancers[i] + suffix);
|
---|
| 33 | };
|
---|
| 34 | return urls;
|
---|
| 35 | };
|
---|
| 36 |
|
---|
| 37 |
|
---|
[9544] | 38 |
|
---|
[9139] | 39 | /**
|
---|
| 40 | * Class: OpenLayers.Layer.OSM.Mapnik
|
---|
| 41 | *
|
---|
| 42 | * Inherits from:
|
---|
| 43 | * - <OpenLayers.Layer.OSM>
|
---|
| 44 | */
|
---|
| 45 | OpenLayers.Layer.OSM.Mapnik = OpenLayers.Class(OpenLayers.Layer.OSM, {
|
---|
| 46 | /**
|
---|
| 47 | * Constructor: OpenLayers.Layer.OSM.Mapnik
|
---|
| 48 | *
|
---|
| 49 | * Parameters:
|
---|
| 50 | * name - {String}
|
---|
| 51 | * options - {Object} Hashtable of extra options to tag onto the layer
|
---|
| 52 | */
|
---|
| 53 | initialize: function(name, options) {
|
---|
[9653] | 54 | var url = get_balanced_urls('{{ settings.OSM_PROXY_CDN_DOMAINS_PROTOCOL }}', {{ settings.OSM_PROXY_CDN_DOMAINS|safe }}, '{{ settings.OSM_PREFIX }}/${z}/${x}/${y}.png');
|
---|
[9139] | 55 | options = OpenLayers.Util.extend({ numZoomLevels: 19 }, options);
|
---|
| 56 | var newArguments = [name, url, options];
|
---|
| 57 | OpenLayers.Layer.OSM.prototype.initialize.apply(this, newArguments);
|
---|
| 58 | },
|
---|
| 59 |
|
---|
| 60 | CLASS_NAME: "OpenLayers.Layer.OSM.Mapnik"
|
---|
| 61 | });
|
---|
| 62 |
|
---|
| 63 | /**
|
---|
| 64 | * Class: OpenLayers.Layer.OSM.Osmarender
|
---|
| 65 | *
|
---|
| 66 | * Inherits from:
|
---|
| 67 | * - <OpenLayers.Layer.OSM>
|
---|
| 68 | */
|
---|
| 69 | OpenLayers.Layer.OSM.Osmarender = OpenLayers.Class(OpenLayers.Layer.OSM, {
|
---|
| 70 | /**
|
---|
| 71 | * Constructor: OpenLayers.Layer.OSM.Osmarender
|
---|
| 72 | *
|
---|
| 73 | * Parameters:
|
---|
| 74 | * name - {String}
|
---|
| 75 | * options - {Object} Hashtable of extra options to tag onto the layer
|
---|
| 76 | */
|
---|
| 77 | initialize: function(name, options) {
|
---|
| 78 | var url = [
|
---|
| 79 | "http://a.tah.openstreetmap.org/Tiles/tile/${z}/${x}/${y}.png",
|
---|
| 80 | "http://b.tah.openstreetmap.org/Tiles/tile/${z}/${x}/${y}.png",
|
---|
| 81 | "http://c.tah.openstreetmap.org/Tiles/tile/${z}/${x}/${y}.png"
|
---|
| 82 | ];
|
---|
| 83 | options = OpenLayers.Util.extend({ numZoomLevels: 18 }, options);
|
---|
| 84 | var newArguments = [name, url, options];
|
---|
| 85 | OpenLayers.Layer.OSM.prototype.initialize.apply(this, newArguments);
|
---|
| 86 | },
|
---|
| 87 |
|
---|
| 88 | CLASS_NAME: "OpenLayers.Layer.OSM.Osmarender"
|
---|
| 89 | });
|
---|
| 90 |
|
---|
| 91 | /**
|
---|
| 92 | * Class: OpenLayers.Layer.OSM.CycleMap
|
---|
| 93 | *
|
---|
| 94 | * Inherits from:
|
---|
| 95 | * - <OpenLayers.Layer.OSM>
|
---|
| 96 | */
|
---|
| 97 | OpenLayers.Layer.OSM.CycleMap = OpenLayers.Class(OpenLayers.Layer.OSM, {
|
---|
| 98 | /**
|
---|
| 99 | * Constructor: OpenLayers.Layer.OSM.CycleMap
|
---|
| 100 | *
|
---|
| 101 | * Parameters:
|
---|
| 102 | * name - {String}
|
---|
| 103 | * options - {Object} Hashtable of extra options to tag onto the layer
|
---|
| 104 | */
|
---|
| 105 | initialize: function(name, options) {
|
---|
| 106 | var url = [
|
---|
| 107 | "http://a.andy.sandbox.cloudmade.com/tiles/cycle/${z}/${x}/${y}.png",
|
---|
| 108 | "http://b.andy.sandbox.cloudmade.com/tiles/cycle/${z}/${x}/${y}.png",
|
---|
| 109 | "http://c.andy.sandbox.cloudmade.com/tiles/cycle/${z}/${x}/${y}.png"
|
---|
| 110 | ];
|
---|
| 111 | options = OpenLayers.Util.extend({ numZoomLevels: 19 }, options);
|
---|
| 112 | var newArguments = [name, url, options];
|
---|
| 113 | OpenLayers.Layer.OSM.prototype.initialize.apply(this, newArguments);
|
---|
| 114 | },
|
---|
| 115 |
|
---|
| 116 | CLASS_NAME: "OpenLayers.Layer.OSM.CycleMap"
|
---|
| 117 | });
|
---|
| 118 |
|
---|
| 119 | /**
|
---|
| 120 | * Class: OpenLayers.Layer.OSM.Maplint
|
---|
| 121 | *
|
---|
| 122 | * Inherits from:
|
---|
| 123 | * - <OpenLayers.Layer.OSM>
|
---|
| 124 | */
|
---|
| 125 | OpenLayers.Layer.OSM.Maplint = OpenLayers.Class(OpenLayers.Layer.OSM, {
|
---|
| 126 | /**
|
---|
| 127 | * Constructor: OpenLayers.Layer.OSM.Maplint
|
---|
| 128 | *
|
---|
| 129 | * Parameters:
|
---|
| 130 | * name - {String}
|
---|
| 131 | * options - {Object} Hashtable of extra options to tag onto the layer
|
---|
| 132 | */
|
---|
| 133 | initialize: function(name, options) {
|
---|
| 134 | var url = [
|
---|
| 135 | "http://d.tah.openstreetmap.org/Tiles/maplint/${z}/${x}/${y}.png",
|
---|
| 136 | "http://e.tah.openstreetmap.org/Tiles/maplint/${z}/${x}/${y}.png",
|
---|
| 137 | "http://f.tah.openstreetmap.org/Tiles/maplint/${z}/${x}/${y}.png"
|
---|
| 138 | ];
|
---|
| 139 | options = OpenLayers.Util.extend({ numZoomLevels: 21, isBaseLayer: false, visibility: false }, options);
|
---|
| 140 | var newArguments = [name, url, options];
|
---|
| 141 | OpenLayers.Layer.OSM.prototype.initialize.apply(this, newArguments);
|
---|
| 142 | },
|
---|
| 143 |
|
---|
| 144 | CLASS_NAME: "OpenLayers.Layer.OSM.Maplint"
|
---|
| 145 | });
|
---|
| 146 |
|
---|
[9302] | 147 | /**
|
---|
| 148 | * Gheat layer
|
---|
| 149 | */
|
---|
[9139] | 150 | OpenLayers.Layer.OSM.Overlay1 = OpenLayers.Class(OpenLayers.Layer.OSM, {
|
---|
| 151 | initialize: function(name, options) {
|
---|
| 152 | var url = [
|
---|
| 153 | "/gheat/classic/${z}/${x},${y}.png"
|
---|
| 154 | ];
|
---|
| 155 | options = OpenLayers.Util.extend({ numZoomLevels: 21 }, options);
|
---|
| 156 | var newArguments = [name, url, options];
|
---|
| 157 | OpenLayers.Layer.OSM.prototype.initialize.apply(this, newArguments);
|
---|
| 158 | },
|
---|
[9274] | 159 | colour: "0,0,0",
|
---|
[9271] | 160 | CLASS_NAME: "OpenLayers.Layer.Overlay"
|
---|
[9139] | 161 | });
|
---|
[9147] | 162 |
|
---|
[9302] | 163 | /**
|
---|
[9819] | 164 | * All accesspoints
|
---|
[9302] | 165 | */
|
---|
[9147] | 166 | OpenLayers.Layer.OSM.Overlay2 = OpenLayers.Class(OpenLayers.Layer.OSM, {
|
---|
| 167 | initialize: function(name, options) {
|
---|
[9653] | 168 | var url = get_balanced_urls('{{ settings.DJANGO_CDN_DOMAINS_PROTOCOL }}' , {{ settings.DJANGO_CDN_DOMAINS|safe }},
|
---|
[9579] | 169 | '{{ settings.DJANGO_PREFIX }}/wlheatmap/tile/${z}/${x},${y}.png?colour=90,90,90');
|
---|
[9147] | 170 | options = OpenLayers.Util.extend({ numZoomLevels: 21 }, options);
|
---|
| 171 | var newArguments = [name, url, options];
|
---|
| 172 | OpenLayers.Layer.OSM.prototype.initialize.apply(this, newArguments);
|
---|
| 173 | },
|
---|
[9274] | 174 | colour: "90,90,90",
|
---|
[9271] | 175 | CLASS_NAME: "OpenLayers.Layer.Overlay"
|
---|
[9147] | 176 | });
|
---|
[9166] | 177 |
|
---|
[9302] | 178 | /**
|
---|
| 179 | * Wireless Leiden nodes
|
---|
| 180 | */
|
---|
[9166] | 181 | OpenLayers.Layer.OSM.Overlay3 = OpenLayers.Class(OpenLayers.Layer.OSM, {
|
---|
| 182 | initialize: function(name, options) {
|
---|
[9653] | 183 | var url = get_balanced_urls('{{ settings.DJANGO_CDN_DOMAINS_PROTOCOL }}', {{ settings.DJANGO_CDN_DOMAINS|safe }},
|
---|
[9820] | 184 | '{{ settings.DJANGO_PREFIX }}/wlheatmap/tile/${z}/${x},${y}.png?colour=255,0,0&accesspoint__organization__name__startswith=Wireless&accesspoint__type=accesspoint');
|
---|
[9166] | 185 | options = OpenLayers.Util.extend({ numZoomLevels: 21 }, options);
|
---|
| 186 | var newArguments = [name, url, options];
|
---|
| 187 | OpenLayers.Layer.OSM.prototype.initialize.apply(this, newArguments);
|
---|
| 188 | },
|
---|
[9274] | 189 | colour: "255,0,0",
|
---|
[9271] | 190 | CLASS_NAME: "OpenLayers.Layer.Overlay"
|
---|
[9166] | 191 | });
|
---|
[9275] | 192 |
|
---|
[9302] | 193 | /**
|
---|
| 194 | * Signal strength
|
---|
| 195 | */
|
---|
[9275] | 196 | OpenLayers.Layer.OSM.Overlay4 = OpenLayers.Class(OpenLayers.Layer.OSM, {
|
---|
| 197 | initialize: function(name, options) {
|
---|
[9653] | 198 | var url = get_balanced_urls('{{ settings.DJANGO_CDN_DOMAINS_PROTOCOL }}', {{ settings.DJANGO_CDN_DOMAINS|safe }},
|
---|
[9579] | 199 | '{{ settings.DJANGO_PREFIX }}/wlheatmap/tile/${z}/${x},${y}.png?colour=50,150,50&signaal__gte=0&signaal__lte=100');
|
---|
[9275] | 200 | options = OpenLayers.Util.extend({ numZoomLevels: 21 }, options);
|
---|
| 201 | var newArguments = [name, url, options];
|
---|
| 202 | OpenLayers.Layer.OSM.prototype.initialize.apply(this, newArguments);
|
---|
| 203 | },
|
---|
[9401] | 204 | colour: "50,150,50",
|
---|
[9275] | 205 | CLASS_NAME: "OpenLayers.Layer.Overlay"
|
---|
| 206 | });
|
---|
[9596] | 207 |
|
---|
| 208 | // create the layer styleMap by giving the default style a context
|
---|
| 209 | var context = {
|
---|
| 210 | getSize: function(feature) {
|
---|
| 211 | var resolution = map.getResolution();
|
---|
| 212 | var scale = map.getZoom();
|
---|
| 213 | var base = 1;
|
---|
| 214 | if (scale > 16) {
|
---|
| 215 | base = 5;
|
---|
| 216 | } else if (scale > 14) {
|
---|
| 217 | base = 20;
|
---|
| 218 | } else {
|
---|
| 219 | base = 50;
|
---|
| 220 | }
|
---|
| 221 | return (base / map.getResolution());
|
---|
| 222 | },
|
---|
| 223 | getColor: function(feature) {
|
---|
| 224 | return feature.attributes.color;
|
---|
| 225 |
|
---|
| 226 | }
|
---|
| 227 | };
|
---|
| 228 | var template = {
|
---|
| 229 | pointRadius: "${getSize}", // using context.getSize(feature)
|
---|
| 230 | fillColor: "${getColor}", // using context.getColor(feature)
|
---|
[9648] | 231 | strokeWidth: 0.5
|
---|
[9596] | 232 | };
|
---|
| 233 | var nodesStyle = new OpenLayers.Style(template, {context: context});
|
---|
| 234 |
|
---|
| 235 | OpenLayers.Layer.GML.NodesOverlay = OpenLayers.Class(OpenLayers.Layer.GML, {
|
---|
| 236 | initialize: function(name, options) {
|
---|
| 237 | var url = "{% url wlheatmap.feature.nodes_json %}";
|
---|
| 238 | options = OpenLayers.Util.extend({ numZoomLevels: 21 }, options);
|
---|
| 239 | var newArguments = [name, url, options];
|
---|
| 240 | OpenLayers.Layer.GML.prototype.initialize.apply(this, newArguments);
|
---|
| 241 | },
|
---|
| 242 | colour: '0,255,0',
|
---|
| 243 | projection: new OpenLayers.Projection("EPSG:4326"),
|
---|
| 244 | styleMap: new OpenLayers.StyleMap(nodesStyle),
|
---|
| 245 | format: OpenLayers.Format.GeoJSON,
|
---|
| 246 | CLASS_NAME: "OpenLayers.Layer.Overlay"
|
---|
| 247 | });
|
---|
| 248 |
|
---|