source: src/django_gheat/wlheatmap/static/heatmap.js@ 9811

Last change on this file since 9811 was 9811, checked in by rick, 13 years ago

Reflect the filters in the URL.

File size: 5.1 KB
Line 
1/**
2 * Var 'map' is set global, used in 'heatmap_extensions.js'.
3 */
4var map;
5
6function init_heatmap(){
7 var lat = getURLParameter('lat');
8 var lon = getURLParameter('lon');
9 var zoom = getURLParameter('zoom');
10
11 if(lat=='null' || lon=='null' || zoom=='null'){
12 var lat = 52.15514;
13 var lon = 4.48959;
14 var zoom = 13;
15 }
16 var projection_wgs = new OpenLayers.Projection("EPSG:4326"); // WGS 1984
17
18 map = new OpenLayers.Map('heatmap', {
19 theme: null,
20 controls: [
21 new OpenLayers.Control.Navigation(),
22 new OpenLayers.Control.Permalink({
23 anchor : true,
24 createParams: function(center, zoom, layers) {
25 center = center || this.map.getCenter();
26
27 var params = OpenLayers.Util.getParameters(this.base);
28
29 // If there's still no center, map is not initialized yet.
30 // Break out of this function, and simply return the params from the
31 // base link.
32 if (center) {
33
34 //zoom
35 params.zoom = zoom || this.map.getZoom();
36
37 //lon,lat
38 var lat = center.lat;
39 var lon = center.lon;
40
41 if (this.displayProjection) {
42 var mapPosition = OpenLayers.Projection.transform(
43 { x: lon, y: lat },
44 this.map.getProjectionObject(),
45 this.displayProjection );
46 lon = mapPosition.x;
47 lat = mapPosition.y;
48 }
49 params.lat = Math.round(lat*100000)/100000;
50 params.lon = Math.round(lon*100000)/100000;
51
52 //layers
53 layers = layers || this.map.layers;
54 params.layers = '';
55 for (var i=0, len=layers.length; i<len; i++) {
56 var layer = layers[i];
57
58 if (layer.isBaseLayer) {
59 params.layers += (layer == this.map.baseLayer) ? "B" : "0";
60 } else {
61 params.layers += (layer.getVisibility()) ? "T" : "F";
62 }
63 }
64 // Update permalink URL to reflect new location and filters
65 layerid = 0;
66 for (var i=1, len=layers.length; i < len; i++) {
67 var layer = layers[i];
68 if ($.isArray(layer.url)) {
69 var url = layer.url[0];
70 } else {
71 var url = layer.url;
72 }
73 var filter = url.split('?')[1];
74 layerid += 1;
75 params['layername' + i] = layer.name;
76 params['layerfilter' + i] = filter;
77 }
78 params['layercount'] = layerid;
79 }
80 return params;
81 }
82 }),
83 new OpenLayers.Control.PanZoomBar(),
84 new OpenLayers.Control.ZoomBox(),
85 new OpenLayers.Control.OverviewMap({
86 maximized : false,
87 mapOptions: { theme: null }
88 }),
89 new OpenLayers.Control.MousePosition({ 'displayProjection' : projection_wgs })
90 /**
91 * Decided to disable these controls.
92 * The layerswitcher has been replaced with a custom one. If you want the original back,
93 * make sure to disable the custom one to prevent collision.
94 */
95
96 //new OpenLayers.Control.PanZoomBav(),
97 //new OpenLayers.Control.ScaleLine(),
98 //new OpenLayers.Control.LayerSwitcher(),
99 ],
100 maxExtent: new OpenLayers.Bounds(-20037508.3427892,-20037508.3427892,20037508.3427892,20037508.3427892),
101 numZoomLevels:16,
102 maxResolution:156543.0339,
103 units:'m',
104 projection: "EPSG:900913",
105 displayProjection: new OpenLayers.Projection("EPSG:4326")
106 });
107
108 map.events.register('click', map, GetMousePos);
109 function GetMousePos(pos) {
110 var pix = map.getLonLatFromPixel(new OpenLayers.Pixel(pos.xy.x,pos.xy.y));
111 var mousepos = OpenLayers.Layer.SphericalMercator.inverseMercator(pix.lon, pix.lat);
112 var zoomlevel = map.getZoom();
113 getNodeList(zoom, mousepos);
114 }
115
116 layerMapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik");
117 map.addLayer(layerMapnik);
118
119 var lonLat = new OpenLayers.LonLat(lon, lat).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
120 map.setCenter (lonLat, zoom);
121
122
123 /**
124 * Layers are created and put in switcher
125 */
126 function add_item(category, layer) {
127 map.addLayer(layer);
128 var checked = '';
129 if (layer.getVisibility()) { checked = "checked='checked'"; };
130 $("#" + category).append("<span id=\"" + layer.name + "\">" +
131 " <div id='layer_switcher_colour' style='background-color:rgb(" + layer.colour + ")' />" +
132 "<input type='checkbox' id='togglelayer' " + checked + " /><font>" + layer.name + " </font><br /></span>"
133 );
134 }
135
136 var signallayer = new OpenLayers.Layer.OSM.Overlay4("signallayer", {isBaseLayer: false, visibility: false});
137 var wlsignalLayer = new OpenLayers.Layer.OSM.Overlay3("Wireless Leiden Coverage", {isBaseLayer: false, visibility: true});
138 var nodesLayer = new OpenLayers.Layer.GML.NodesOverlay("Node Locations", {isBaseLayer: false, visibility: false});
139
140 add_item('default', signallayer);
141 add_item('default', wlsignalLayer);
142 add_item('features', nodesLayer);
143}
Note: See TracBrowser for help on using the repository browser.