source: src/django_gheat/website/static/OpenStreetMap.js@ 9158

Last change on this file since 9158 was 9147, checked in by rick, 14 years ago

Alternative heatmap generation 'framework'. Simple/Single file with no
persistent storage, making debugging easy.

This proves that the heatmap code itself is not causing the issues, but the
image manipulation PIL is not so fast (or properly utilized). Might want to
consider a more advanced image generation toolkit. (2000 entries: 5+ secs).

Also loading a large dataset into Objects seems to be very slow. The database
call is effient (just a single one), but building all the related objects,
makes is slow (2000 entries: 1+ sec). Might want to check if raw queries suit
to avoid conversion our needs:

http://docs.djangoproject.com/en/dev/topics/db/sql/

File size: 5.3 KB
Line 
1/**
2 * Namespace: Util.OSM
3 */
4OpenLayers.Util.OSM = {};
5
6/**
7 * Constant: MISSING_TILE_URL
8 * {String} URL of image to display for missing tiles
9 */
10OpenLayers.Util.OSM.MISSING_TILE_URL = "http://openstreetmap.org/openlayers/img/404.png";
11
12/**
13 * Property: originalOnImageLoadError
14 * {Function} Original onImageLoadError function.
15 */
16OpenLayers.Util.OSM.originalOnImageLoadError = OpenLayers.Util.onImageLoadError;
17
18/**
19 * Function: onImageLoadError
20 */
21OpenLayers.Util.onImageLoadError = function() {
22 if (this.src.match(/^http:\/\/[abc]\.[a-z]+\.openstreetmap\.org\//)) {
23 this.src = OpenLayers.Util.OSM.MISSING_TILE_URL;
24 } else if (this.src.match(/^http:\/\/[def]\.tah\.openstreetmap\.org\//)) {
25 // do nothing - this layer is transparent
26 } else {
27 OpenLayers.Util.OSM.originalOnImageLoadError;
28 }
29};
30
31/**
32 * Class: OpenLayers.Layer.OSM.Mapnik
33 *
34 * Inherits from:
35 * - <OpenLayers.Layer.OSM>
36 */
37OpenLayers.Layer.OSM.Mapnik = OpenLayers.Class(OpenLayers.Layer.OSM, {
38 /**
39 * Constructor: OpenLayers.Layer.OSM.Mapnik
40 *
41 * Parameters:
42 * name - {String}
43 * options - {Object} Hashtable of extra options to tag onto the layer
44 */
45 initialize: function(name, options) {
46 var url = [
47 "http://a.tile.openstreetmap.org/${z}/${x}/${y}.png",
48 "http://b.tile.openstreetmap.org/${z}/${x}/${y}.png",
49 "http://c.tile.openstreetmap.org/${z}/${x}/${y}.png"
50 ];
51 options = OpenLayers.Util.extend({ numZoomLevels: 19 }, options);
52 var newArguments = [name, url, options];
53 OpenLayers.Layer.OSM.prototype.initialize.apply(this, newArguments);
54 },
55
56 CLASS_NAME: "OpenLayers.Layer.OSM.Mapnik"
57});
58
59/**
60 * Class: OpenLayers.Layer.OSM.Osmarender
61 *
62 * Inherits from:
63 * - <OpenLayers.Layer.OSM>
64 */
65OpenLayers.Layer.OSM.Osmarender = OpenLayers.Class(OpenLayers.Layer.OSM, {
66 /**
67 * Constructor: OpenLayers.Layer.OSM.Osmarender
68 *
69 * Parameters:
70 * name - {String}
71 * options - {Object} Hashtable of extra options to tag onto the layer
72 */
73 initialize: function(name, options) {
74 var url = [
75 "http://a.tah.openstreetmap.org/Tiles/tile/${z}/${x}/${y}.png",
76 "http://b.tah.openstreetmap.org/Tiles/tile/${z}/${x}/${y}.png",
77 "http://c.tah.openstreetmap.org/Tiles/tile/${z}/${x}/${y}.png"
78 ];
79 options = OpenLayers.Util.extend({ numZoomLevels: 18 }, options);
80 var newArguments = [name, url, options];
81 OpenLayers.Layer.OSM.prototype.initialize.apply(this, newArguments);
82 },
83
84 CLASS_NAME: "OpenLayers.Layer.OSM.Osmarender"
85});
86
87/**
88 * Class: OpenLayers.Layer.OSM.CycleMap
89 *
90 * Inherits from:
91 * - <OpenLayers.Layer.OSM>
92 */
93OpenLayers.Layer.OSM.CycleMap = OpenLayers.Class(OpenLayers.Layer.OSM, {
94 /**
95 * Constructor: OpenLayers.Layer.OSM.CycleMap
96 *
97 * Parameters:
98 * name - {String}
99 * options - {Object} Hashtable of extra options to tag onto the layer
100 */
101 initialize: function(name, options) {
102 var url = [
103 "http://a.andy.sandbox.cloudmade.com/tiles/cycle/${z}/${x}/${y}.png",
104 "http://b.andy.sandbox.cloudmade.com/tiles/cycle/${z}/${x}/${y}.png",
105 "http://c.andy.sandbox.cloudmade.com/tiles/cycle/${z}/${x}/${y}.png"
106 ];
107 options = OpenLayers.Util.extend({ numZoomLevels: 19 }, options);
108 var newArguments = [name, url, options];
109 OpenLayers.Layer.OSM.prototype.initialize.apply(this, newArguments);
110 },
111
112 CLASS_NAME: "OpenLayers.Layer.OSM.CycleMap"
113});
114
115/**
116 * Class: OpenLayers.Layer.OSM.Maplint
117 *
118 * Inherits from:
119 * - <OpenLayers.Layer.OSM>
120 */
121OpenLayers.Layer.OSM.Maplint = OpenLayers.Class(OpenLayers.Layer.OSM, {
122 /**
123 * Constructor: OpenLayers.Layer.OSM.Maplint
124 *
125 * Parameters:
126 * name - {String}
127 * options - {Object} Hashtable of extra options to tag onto the layer
128 */
129 initialize: function(name, options) {
130 var url = [
131 "http://d.tah.openstreetmap.org/Tiles/maplint/${z}/${x}/${y}.png",
132 "http://e.tah.openstreetmap.org/Tiles/maplint/${z}/${x}/${y}.png",
133 "http://f.tah.openstreetmap.org/Tiles/maplint/${z}/${x}/${y}.png"
134 ];
135 options = OpenLayers.Util.extend({ numZoomLevels: 21, isBaseLayer: false, visibility: false }, options);
136 var newArguments = [name, url, options];
137 OpenLayers.Layer.OSM.prototype.initialize.apply(this, newArguments);
138 },
139
140 CLASS_NAME: "OpenLayers.Layer.OSM.Maplint"
141});
142
143
144OpenLayers.Layer.OSM.Overlay1 = OpenLayers.Class(OpenLayers.Layer.OSM, {
145 initialize: function(name, options) {
146 var url = [
147 "/gheat/classic/${z}/${x},${y}.png"
148 ];
149 options = OpenLayers.Util.extend({ numZoomLevels: 21 }, options);
150 var newArguments = [name, url, options];
151 OpenLayers.Layer.OSM.prototype.initialize.apply(this, newArguments);
152 },
153
154 CLASS_NAME: "OpenLayers.Layer.Overlay1"
155});
156
157OpenLayers.Layer.OSM.Overlay2 = OpenLayers.Class(OpenLayers.Layer.OSM, {
158 initialize: function(name, options) {
159 var url = [
160 "/website/tile/${z}/${x},${y}.png"
161 ];
162 options = OpenLayers.Util.extend({ numZoomLevels: 21 }, options);
163 var newArguments = [name, url, options];
164 OpenLayers.Layer.OSM.prototype.initialize.apply(this, newArguments);
165 },
166
167 CLASS_NAME: "OpenLayers.Layer.Overlay2"
168});
Note: See TracBrowser for help on using the repository browser.