Mercurial > lada > lada-client
annotate app/view/panel/Map.js @ 919:c8599a543f03
Added tag 2.1.1 for changeset 9358c5feb843
author | Dustin Demuth <dustin@intevation.de> |
---|---|
date | Fri, 14 Aug 2015 10:34:53 +0200 |
parents | 2b7bcb778f0a |
children | 1df6b6210b42 |
rev | line source |
---|---|
605
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
1 /* Copyright (C) 2013 by Bundesamt fuer Strahlenschutz |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
2 * Software engineering by Intevation GmbH |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
3 * |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
4 * This file is Free Software under the GNU GPL (v>=3) |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
5 * and comes with ABSOLUTELY NO WARRANTY! Check out |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
6 * the documentation coming with IMIS-Labordaten-Application for details. |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
7 */ |
893
07dfcdf5b41f
jsduck for grids and panels
Dustin Demuth <dustin@intevation.de>
parents:
879
diff
changeset
|
8 |
07dfcdf5b41f
jsduck for grids and panels
Dustin Demuth <dustin@intevation.de>
parents:
879
diff
changeset
|
9 |
07dfcdf5b41f
jsduck for grids and panels
Dustin Demuth <dustin@intevation.de>
parents:
879
diff
changeset
|
10 /** |
07dfcdf5b41f
jsduck for grids and panels
Dustin Demuth <dustin@intevation.de>
parents:
879
diff
changeset
|
11 * This is the MapPanel. |
07dfcdf5b41f
jsduck for grids and panels
Dustin Demuth <dustin@intevation.de>
parents:
879
diff
changeset
|
12 * It uses OpenLayers to display the map |
07dfcdf5b41f
jsduck for grids and panels
Dustin Demuth <dustin@intevation.de>
parents:
879
diff
changeset
|
13 */ |
605
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
14 Ext.define('Lada.view.panel.Map', { |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
15 extend: 'Ext.panel.Panel', |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
16 alias: 'widget.map', |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
17 |
614
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
18 record: null, |
638
d21048cbdbb3
Added controllers for map and location form and handle new locations.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
635
diff
changeset
|
19 locationRecord: null, |
614
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
20 |
605
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
21 /** |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
22 * @cfg |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
23 * OpenLayers map options. |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
24 */ |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
25 mapOptions: { |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
26 maxExtent: new OpenLayers.Bounds(2.9, 42.95, 18.1, 60.6), |
614
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
27 scales: [5000000, 3000000, 2000000, 1000000, 500000, 250000, 100000, 25000], |
605
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
28 units: 'dd', |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
29 projection: new OpenLayers.Projection('EPSG:4326') |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
30 }, |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
31 |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
32 |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
33 /** |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
34 * @private |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
35 * Initialize the map panel. |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
36 */ |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
37 initComponent: function() { |
796
7267bae1d43f
made window-panel recyclable, fwd openlayers events to ext
Dustin Demuth <dustin@intevation.de>
parents:
643
diff
changeset
|
38 var id = Ext.id(); |
614
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
39 this.layers = [ |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
40 new OpenLayers.Layer.WMS( |
643
477379250512
Open the ort create window on button click.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
638
diff
changeset
|
41 'Standard' + id, |
614
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
42 'http://osm.intevation.de/cgi-bin/standard.fcgi?', |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
43 { |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
44 layers: 'OSM-WMS-Dienst', |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
45 format: 'image/png', |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
46 BGCOLOR: '0xFFFFFF' |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
47 }, { |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
48 isBaseLayer: true, |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
49 buffer: 0, |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
50 visibility: true |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
51 }) |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
52 ]; |
643
477379250512
Open the ort create window on button click.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
638
diff
changeset
|
53 this.map = new OpenLayers.Map('map_' + id, { |
605
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
54 controls: [], |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
55 tileManager: null, |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
56 zoomMethod: null |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
57 }); |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
58 this.map.setOptions(this.mapOptions); |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
59 this.map.addLayers(this.layers); |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
60 var keyControl = new OpenLayers.Control.KeyboardDefaults(); |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
61 this.map.addControl(keyControl); |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
62 keyControl.activate(); |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
63 this.bodyStyle = {background: '#fff'}; |
614
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
64 this.initData(); |
635
def8def373e8
Added a toolbar to the OpenLayers map panel.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
614
diff
changeset
|
65 this.tbar = Ext.create('Lada.view.widget.MapToolbar'); |
796
7267bae1d43f
made window-panel recyclable, fwd openlayers events to ext
Dustin Demuth <dustin@intevation.de>
parents:
643
diff
changeset
|
66 this.addEvents('featureselected'); |
614
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
67 this.callParent(arguments); |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
68 }, |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
69 |
895 | 70 /** |
71 * Initialise the Data and Create an | |
72 * Array of OpenLayers.Layer objects. | |
73 */ | |
614
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
74 initData: function() { |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
75 var me = this; |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
76 this.locationFeatures = []; |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
77 this.locationStore = Ext.data.StoreManager.get('locations'); |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
78 for (var i = 0; i < this.locationStore.count(); i++) { |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
79 this.locationFeatures.push(new OpenLayers.Feature.Vector( |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
80 new OpenLayers.Geometry.Point( |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
81 this.locationStore.getAt(i).get('longitude'), |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
82 this.locationStore.getAt(i).get('latitude') |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
83 ), |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
84 { |
879
729bfea7e8b1
Re-Styled the markers in the map: Increased icon-size of selected-marker to 15px, added colored labels to the markers showing the bezeichnung of the location
Dustin Demuth <dustin@intevation.de>
parents:
803
diff
changeset
|
85 id: this.locationStore.getAt(i).get('id'), |
729bfea7e8b1
Re-Styled the markers in the map: Increased icon-size of selected-marker to 15px, added colored labels to the markers showing the bezeichnung of the location
Dustin Demuth <dustin@intevation.de>
parents:
803
diff
changeset
|
86 bez: this.locationStore.getAt(i).get('bezeichnung') |
614
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
87 } |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
88 )); |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
89 } |
643
477379250512
Open the ort create window on button click.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
638
diff
changeset
|
90 this.featureLayer = new OpenLayers.Layer.Vector('vector_' + this.map.name, { |
614
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
91 styleMap: new OpenLayers.StyleMap({ |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
92 'default': new OpenLayers.Style(OpenLayers.Util.applyDefaults({ |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
93 externalGraphic: 'resources/lib/OpenLayers/img/marker-green.png', |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
94 graphicOpacity: 1, |
879
729bfea7e8b1
Re-Styled the markers in the map: Increased icon-size of selected-marker to 15px, added colored labels to the markers showing the bezeichnung of the location
Dustin Demuth <dustin@intevation.de>
parents:
803
diff
changeset
|
95 pointRadius: 10, |
729bfea7e8b1
Re-Styled the markers in the map: Increased icon-size of selected-marker to 15px, added colored labels to the markers showing the bezeichnung of the location
Dustin Demuth <dustin@intevation.de>
parents:
803
diff
changeset
|
96 label: '${bez}', |
729bfea7e8b1
Re-Styled the markers in the map: Increased icon-size of selected-marker to 15px, added colored labels to the markers showing the bezeichnung of the location
Dustin Demuth <dustin@intevation.de>
parents:
803
diff
changeset
|
97 labelAlign: 'rt', |
729bfea7e8b1
Re-Styled the markers in the map: Increased icon-size of selected-marker to 15px, added colored labels to the markers showing the bezeichnung of the location
Dustin Demuth <dustin@intevation.de>
parents:
803
diff
changeset
|
98 fontColor: 'green', |
729bfea7e8b1
Re-Styled the markers in the map: Increased icon-size of selected-marker to 15px, added colored labels to the markers showing the bezeichnung of the location
Dustin Demuth <dustin@intevation.de>
parents:
803
diff
changeset
|
99 fontWeight: 'bold' |
614
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
100 }, OpenLayers.Feature.Vector.style['default'])), |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
101 'select': new OpenLayers.Style({ |
879
729bfea7e8b1
Re-Styled the markers in the map: Increased icon-size of selected-marker to 15px, added colored labels to the markers showing the bezeichnung of the location
Dustin Demuth <dustin@intevation.de>
parents:
803
diff
changeset
|
102 externalGraphic: 'resources/lib/OpenLayers/img/marker-blue.png', |
729bfea7e8b1
Re-Styled the markers in the map: Increased icon-size of selected-marker to 15px, added colored labels to the markers showing the bezeichnung of the location
Dustin Demuth <dustin@intevation.de>
parents:
803
diff
changeset
|
103 pointRadius: 15, |
729bfea7e8b1
Re-Styled the markers in the map: Increased icon-size of selected-marker to 15px, added colored labels to the markers showing the bezeichnung of the location
Dustin Demuth <dustin@intevation.de>
parents:
803
diff
changeset
|
104 label: '${bez}', |
729bfea7e8b1
Re-Styled the markers in the map: Increased icon-size of selected-marker to 15px, added colored labels to the markers showing the bezeichnung of the location
Dustin Demuth <dustin@intevation.de>
parents:
803
diff
changeset
|
105 labelAlign: 'rt', |
729bfea7e8b1
Re-Styled the markers in the map: Increased icon-size of selected-marker to 15px, added colored labels to the markers showing the bezeichnung of the location
Dustin Demuth <dustin@intevation.de>
parents:
803
diff
changeset
|
106 fontColor: 'blue', |
729bfea7e8b1
Re-Styled the markers in the map: Increased icon-size of selected-marker to 15px, added colored labels to the markers showing the bezeichnung of the location
Dustin Demuth <dustin@intevation.de>
parents:
803
diff
changeset
|
107 fontWeight: 'bold' |
614
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
108 }) |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
109 }) |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
110 }); |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
111 this.featureLayer.addFeatures(this.locationFeatures); |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
112 this.map.addLayer(this.featureLayer); |
796
7267bae1d43f
made window-panel recyclable, fwd openlayers events to ext
Dustin Demuth <dustin@intevation.de>
parents:
643
diff
changeset
|
113 |
614
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
114 this.selectControl = new OpenLayers.Control.SelectFeature(this.featureLayer, { |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
115 clickout: false, |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
116 toggle: false, |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
117 multiple: false, |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
118 hover: false, |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
119 onSelect: me.selectedFeature, |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
120 scope: me |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
121 }); |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
122 this.map.addControl(this.selectControl); |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
123 this.selectControl.activate(); |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
124 }, |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
125 |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
126 selectFeature: function(id) { |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
127 var feature = this.featureLayer.getFeaturesByAttribute('id', id); |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
128 this.map.setCenter( |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
129 new OpenLayers.LonLat(feature[0].geometry.x, feature[0].geometry.y)); |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
130 this.map.zoomToScale(this.mapOptions.scales[5]); |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
131 this.selectControl.unselectAll(); |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
132 this.selectControl.select(feature[0]); |
605
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
133 }, |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
134 |
638
d21048cbdbb3
Added controllers for map and location form and handle new locations.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
635
diff
changeset
|
135 activateDraw: function(record) { |
d21048cbdbb3
Added controllers for map and location form and handle new locations.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
635
diff
changeset
|
136 this.locationRecord = record; |
d21048cbdbb3
Added controllers for map and location form and handle new locations.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
635
diff
changeset
|
137 if (!this.drawPoint) { |
d21048cbdbb3
Added controllers for map and location form and handle new locations.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
635
diff
changeset
|
138 this.drawPoint = new OpenLayers.Control.DrawFeature(this.featureLayer, |
d21048cbdbb3
Added controllers for map and location form and handle new locations.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
635
diff
changeset
|
139 OpenLayers.Handler.Point); |
d21048cbdbb3
Added controllers for map and location form and handle new locations.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
635
diff
changeset
|
140 this.map.addControl(this.drawPoint); |
d21048cbdbb3
Added controllers for map and location form and handle new locations.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
635
diff
changeset
|
141 } |
d21048cbdbb3
Added controllers for map and location form and handle new locations.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
635
diff
changeset
|
142 this.drawPoint.activate(); |
d21048cbdbb3
Added controllers for map and location form and handle new locations.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
635
diff
changeset
|
143 this.drawPoint.events.register('featureadded', this, this.featureAdded); |
d21048cbdbb3
Added controllers for map and location form and handle new locations.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
635
diff
changeset
|
144 }, |
d21048cbdbb3
Added controllers for map and location form and handle new locations.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
635
diff
changeset
|
145 |
d21048cbdbb3
Added controllers for map and location form and handle new locations.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
635
diff
changeset
|
146 featureAdded: function(features) { |
d21048cbdbb3
Added controllers for map and location form and handle new locations.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
635
diff
changeset
|
147 this.locationRecord.set('latitude', features.feature.geometry.y); |
d21048cbdbb3
Added controllers for map and location form and handle new locations.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
635
diff
changeset
|
148 this.locationRecord.set('longitude', features.feature.geometry.x); |
d21048cbdbb3
Added controllers for map and location form and handle new locations.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
635
diff
changeset
|
149 this.drawPoint.deactivate(); |
d21048cbdbb3
Added controllers for map and location form and handle new locations.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
635
diff
changeset
|
150 this.selectControl.unselectAll(); |
d21048cbdbb3
Added controllers for map and location form and handle new locations.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
635
diff
changeset
|
151 this.selectControl.select(features.feature); |
d21048cbdbb3
Added controllers for map and location form and handle new locations.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
635
diff
changeset
|
152 }, |
d21048cbdbb3
Added controllers for map and location form and handle new locations.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
635
diff
changeset
|
153 |
605
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
154 /** |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
155 * @private |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
156 * Override to display and update the map view in the panel. |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
157 */ |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
158 afterRender: function() { |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
159 this.superclass.afterRender.apply(this, arguments); |
796
7267bae1d43f
made window-panel recyclable, fwd openlayers events to ext
Dustin Demuth <dustin@intevation.de>
parents:
643
diff
changeset
|
160 |
605
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
161 this.map.render(this.body.dom); |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
162 this.map.addControl(new OpenLayers.Control.Navigation()); |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
163 this.map.addControl(new OpenLayers.Control.PanZoomBar()); |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
164 this.map.addControl(new OpenLayers.Control.ScaleLine()); |
796
7267bae1d43f
made window-panel recyclable, fwd openlayers events to ext
Dustin Demuth <dustin@intevation.de>
parents:
643
diff
changeset
|
165 }, |
7267bae1d43f
made window-panel recyclable, fwd openlayers events to ext
Dustin Demuth <dustin@intevation.de>
parents:
643
diff
changeset
|
166 |
7267bae1d43f
made window-panel recyclable, fwd openlayers events to ext
Dustin Demuth <dustin@intevation.de>
parents:
643
diff
changeset
|
167 /** |
7267bae1d43f
made window-panel recyclable, fwd openlayers events to ext
Dustin Demuth <dustin@intevation.de>
parents:
643
diff
changeset
|
168 * Forward OpenlayersEvent to EXT |
7267bae1d43f
made window-panel recyclable, fwd openlayers events to ext
Dustin Demuth <dustin@intevation.de>
parents:
643
diff
changeset
|
169 */ |
7267bae1d43f
made window-panel recyclable, fwd openlayers events to ext
Dustin Demuth <dustin@intevation.de>
parents:
643
diff
changeset
|
170 selectedFeature: function() { |
7267bae1d43f
made window-panel recyclable, fwd openlayers events to ext
Dustin Demuth <dustin@intevation.de>
parents:
643
diff
changeset
|
171 this.fireEvent('featureselected', this, arguments); |
614
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
172 }, |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
173 |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
174 beforeDestroy: function() { |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
175 if (this.map) { |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
176 this.map.destroy(); |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
177 } |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
178 delete this.map; |
04e380ce4d73
Load locations as layer on the map, set selections based on the selected 'ort'.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
605
diff
changeset
|
179 this.callParent(arguments); |
605
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
180 }, |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
181 |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
182 /** |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
183 * @private |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
184 * Override to resize the map and reposition the logo. |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
185 */ |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
186 onResize: function() { |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
187 this.superclass.onResize.apply(this, arguments); |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
188 this.map.updateSize(); |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
189 } |
c6994912a326
Added panel with OpenLayers map.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
diff
changeset
|
190 }); |