comparison geotemco/js/Overlayloader/Overlayloader.js @ 0:b12c99b7c3f0

commit for previous development
author Zoe Hong <zhong@mpiwg-berlin.mpg.de>
date Mon, 19 Jan 2015 17:13:49 +0100
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:b12c99b7c3f0
1 /*
2 * Overlayloader.js
3 *
4 * Copyright (c) 2013, Sebastian Kruse. All rights reserved.
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 3 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19 * MA 02110-1301 USA
20 */
21
22 /**
23 * @class Overlayloader
24 * Implementation for a Overlayloader UI
25 * @author Sebastian Kruse (skruse@mpiwg-berlin.mpg.de)
26 *
27 * @param {HTML object} parent div to append the Overlayloader
28 */
29 function Overlayloader(parent) {
30
31 this.overlayLoader = this;
32
33 this.parent = parent;
34 this.options = parent.options;
35 this.attachedMapWidgets = parent.attachedMapWidgets;
36
37 this.overlays = [];
38
39 this.initialize();
40 }
41
42 Overlayloader.prototype = {
43
44 show : function() {
45 this.overlayloaderDiv.style.display = "block";
46 },
47
48 hide : function() {
49 this.overlayloaderDiv.style.display = "none";
50 },
51
52 initialize : function() {
53
54 this.addKMLLoader();
55 this.addKMZLoader();
56 this.addArcGISWMSLoader();
57 this.addXYZLoader();
58 this.addRomanEmpireLoader();
59 this.addMapsForFreeWaterLayer();
60 this.addConfigLoader();
61
62 // trigger change event on the select so
63 // that only the first loader div will be shown
64 $(this.parent.gui.loaderTypeSelect).change();
65 },
66
67 distributeKML : function(kmlURL) {
68 var newOverlay = new Object();
69 newOverlay.name = kmlURL;
70 newOverlay.layers = [];
71
72 $(this.attachedMapWidgets).each(function(){
73 var newLayer = new OpenLayers.Layer.Vector("KML", {
74 projection: this.openlayersMap.displayProjection,
75 strategies: [new OpenLayers.Strategy.Fixed()],
76 protocol: new OpenLayers.Protocol.HTTP({
77 url: kmlURL,
78 format: new OpenLayers.Format.KML({
79 extractStyles: true,
80 extractAttributes: true
81 })
82 })
83 });
84
85 newOverlay.layers.push({map:this.openlayersMap,layer:newLayer});
86
87 this.openlayersMap.addLayer(newLayer);
88 });
89
90 this.overlays.push(newOverlay);
91 this.parent.gui.refreshOverlayList();
92 },
93
94 distributeKMZ : function(kmzURL) {
95 var newOverlay = new Object();
96 newOverlay.name = kmzURL;
97 newOverlay.layers = [];
98
99 $(this.attachedMapWidgets).each(function(){
100 var newLayer = new OpenLayers.Layer.Vector("KML", {
101 projection: this.openlayersMap.displayProjection,
102 strategies: [new OpenLayers.Strategy.Fixed()],
103 format: OpenLayers.Format.KML,
104 extractAttributes: true
105 });
106
107 newOverlay.layers.push({map:this.openlayersMap,layer:newLayer});
108
109 var map = this.openlayersMap;
110
111 GeoTemConfig.getKmz(kmzURL, function(kmlDoms){
112 $(kmlDoms).each(function(){
113 var kml = new OpenLayers.Format.KML().read(this);
114 newLayer.addFeatures(kml);
115 map.addLayer(newLayer);
116 });
117 });
118 });
119
120 this.overlays.push(newOverlay);
121 this.parent.gui.refreshOverlayList();
122 },
123
124 distributeArcGISWMS : function(wmsURL, wmsLayer) {
125 var newOverlay = new Object();
126 newOverlay.name = wmsURL + " - " + wmsLayer;
127 newOverlay.layers = [];
128
129 var newLayer = new OpenLayers.Layer.WMS("ArcGIS WMS label", wmsURL, {
130 layers: wmsLayer,
131 format: "image/png",
132 transparent: "true"
133 }
134 ,{
135 displayOutsideMaxExtent: true,
136 isBaseLayer: false,
137 projection : "EPSG:3857"
138 }
139 );
140
141 newLayer.setIsBaseLayer(false);
142 $(this.attachedMapWidgets).each(function(){
143 this.openlayersMap.addLayer(newLayer);
144 newOverlay.layers.push({map:this.openlayersMap,layer:newLayer});
145 });
146
147 this.overlays.push(newOverlay);
148 this.parent.gui.refreshOverlayList();
149 },
150
151 distributeXYZ : function(xyzURL,zoomOffset) {
152 var newOverlay = new Object();
153 newOverlay.name = xyzURL;
154 newOverlay.layers = [];
155
156 var newLayer = new OpenLayers.Layer.XYZ(
157 "XYZ Layer",
158 [
159 xyzURL
160 ], {
161 sphericalMercator: true,
162 transitionEffect: "resize",
163 buffer: 1,
164 numZoomLevels: 12,
165 transparent : true,
166 isBaseLayer : false,
167 zoomOffset:zoomOffset?zoomOffset:0
168 }
169 );
170
171 newLayer.setIsBaseLayer(false);
172 $(this.attachedMapWidgets).each(function(){
173 this.openlayersMap.addLayer(newLayer);
174 newOverlay.layers.push({map:this.openlayersMap,layer:newLayer});
175 });
176
177 this.overlays.push(newOverlay);
178 this.parent.gui.refreshOverlayList();
179 },
180
181 addKMLLoader : function() {
182 $(this.parent.gui.loaderTypeSelect).append("<option value='KMLLoader'>KML File URL</option>");
183
184 this.KMLLoaderTab = document.createElement("div");
185 $(this.KMLLoaderTab).attr("id","KMLLoader");
186
187 this.kmlURL = document.createElement("input");
188 $(this.kmlURL).attr("type","text");
189 $(this.KMLLoaderTab).append(this.kmlURL);
190
191 this.loadKMLButton = document.createElement("button");
192 $(this.loadKMLButton).text("load KML");
193 $(this.KMLLoaderTab).append(this.loadKMLButton);
194
195 $(this.loadKMLButton).click($.proxy(function(){
196 var kmlURL = $(this.kmlURL).val();
197 if (kmlURL.length == 0)
198 return;
199 if (typeof GeoTemConfig.proxy != 'undefined')
200 kmlURL = GeoTemConfig.proxy + kmlURL;
201
202 this.distributeKML(kmlURL);
203 },this));
204
205 $(this.parent.gui.loaders).append(this.KMLLoaderTab);
206 },
207
208 addKMZLoader : function() {
209 $(this.parent.gui.loaderTypeSelect).append("<option value='KMZLoader'>KMZ File URL</option>");
210
211 this.KMZLoaderTab = document.createElement("div");
212 $(this.KMZLoaderTab).attr("id","KMZLoader");
213
214 this.kmzURL = document.createElement("input");
215 $(this.kmzURL).attr("type","text");
216 $(this.KMZLoaderTab).append(this.kmzURL);
217
218 this.loadKMZButton = document.createElement("button");
219 $(this.loadKMZButton).text("load KMZ");
220 $(this.KMZLoaderTab).append(this.loadKMZButton);
221
222 $(this.loadKMZButton).click($.proxy(function(){
223 var kmzURL = $(this.kmzURL).val();
224 if (kmzURL.length == 0)
225 return;
226 if (typeof GeoTemConfig.proxy != 'undefined')
227 kmzURL = GeoTemConfig.proxy + kmzURL;
228
229 this.distributeKMZ(kmzURL);
230 },this));
231
232 $(this.parent.gui.loaders).append(this.KMZLoaderTab);
233 },
234
235 addArcGISWMSLoader : function() {
236 $(this.parent.gui.loaderTypeSelect).append("<option value='ArcGISWMSLoader'>ArcGIS WMS</option>");
237
238 this.ArcGISWMSLoaderTab = document.createElement("div");
239 $(this.ArcGISWMSLoaderTab).attr("id","ArcGISWMSLoader");
240
241 $(this.ArcGISWMSLoaderTab).append("URL: ");
242
243 this.wmsURL = document.createElement("input");
244 $(this.wmsURL).attr("type","text");
245 $(this.ArcGISWMSLoaderTab).append(this.wmsURL);
246
247 $(this.ArcGISWMSLoaderTab).append("Layer: ");
248
249 this.wmsLayer = document.createElement("input");
250 $(this.wmsLayer).attr("type","text");
251 $(this.ArcGISWMSLoaderTab).append(this.wmsLayer);
252
253 this.loadArcGISWMSButton = document.createElement("button");
254 $(this.loadArcGISWMSButton).text("load Layer");
255 $(this.ArcGISWMSLoaderTab).append(this.loadArcGISWMSButton);
256
257 $(this.loadArcGISWMSButton).click($.proxy(function(){
258 var wmsURL = $(this.wmsURL).val();
259 var wmsLayer = $(this.wmsLayer).val();
260 if (wmsURL.length == 0)
261 return;
262
263 this.distributeArcGISWMS(wmsURL, wmsLayer);
264 },this));
265
266 $(this.parent.gui.loaders).append(this.ArcGISWMSLoaderTab);
267 },
268
269 addXYZLoader : function() {
270 $(this.parent.gui.loaderTypeSelect).append("<option value='XYZLoader'>XYZ Layer</option>");
271
272 this.XYZLoaderTab = document.createElement("div");
273 $(this.XYZLoaderTab).attr("id","XYZLoader");
274
275 $(this.XYZLoaderTab).append("URL (with x,y,z variables): ");
276
277 this.xyzURL = document.createElement("input");
278 $(this.xyzURL).attr("type","text");
279 $(this.XYZLoaderTab).append(this.xyzURL);
280
281 this.loadXYZButton = document.createElement("button");
282 $(this.loadXYZButton).text("load Layer");
283 $(this.XYZLoaderTab).append(this.loadXYZButton);
284
285 $(this.loadXYZButton).click($.proxy(function(){
286 var xyzURL = $(this.xyzURL).val();
287 if (xyzURL.length == 0)
288 return;
289
290 this.distributeXYZ(xyzURL);
291 },this));
292
293 $(this.parent.gui.loaders).append(this.XYZLoaderTab);
294 },
295
296 addRomanEmpireLoader : function() {
297 $(this.parent.gui.loaderTypeSelect).append("<option value='RomanEmpireLoader'>Roman Empire</option>");
298
299 this.RomanEmpireLoaderTab = document.createElement("div");
300 $(this.RomanEmpireLoaderTab).attr("id","RomanEmpireLoader");
301
302 this.loadRomanEmpireButton = document.createElement("button");
303 $(this.loadRomanEmpireButton).text("load Layer");
304 $(this.RomanEmpireLoaderTab).append(this.loadRomanEmpireButton);
305
306 $(this.loadRomanEmpireButton).click($.proxy(function(){
307 this.distributeXYZ("http://pelagios.dme.ait.ac.at/tilesets/imperium/${z}/${x}/${y}.png",1);
308 },this));
309
310 $(this.parent.gui.loaders).append(this.RomanEmpireLoaderTab);
311 },
312
313 addMapsForFreeWaterLayer : function() {
314 $(this.parent.gui.loaderTypeSelect).append("<option value='MapsForFreeWaterLayerLoader'>Water Layer (Maps-For-Free)</option>");
315
316 this.MapsForFreeWaterTab = document.createElement("div");
317 $(this.MapsForFreeWaterTab).attr("id","MapsForFreeWaterLayerLoader");
318
319 this.loadMapsForFreeWaterLayerButton = document.createElement("button");
320 $(this.loadMapsForFreeWaterLayerButton).text("load Layer");
321 $(this.MapsForFreeWaterTab).append(this.loadMapsForFreeWaterLayerButton);
322
323 $(this.loadMapsForFreeWaterLayerButton).click($.proxy(function(){
324 this.distributeXYZ("http://maps-for-free.com/layer/water/z${z}/row${y}/${z}_${x}-${y}.gif",1);
325 },this));
326
327 $(this.parent.gui.loaders).append(this.MapsForFreeWaterTab);
328 },
329
330 addConfigLoader : function() {
331 if ( (this.parent.options.wms_overlays instanceof Array) &&
332 (this.parent.options.wms_overlays.length > 0) ){
333 var overlayloader = this;
334
335 $(this.parent.gui.loaderTypeSelect).append("<option value='ConfigLoader'>Other WMS maps</option>");
336
337 this.ConfigLoaderTab = document.createElement("div");
338 $(this.ConfigLoaderTab).attr("id","ConfigLoader");
339
340 this.ConfigMapSelect = document.createElement("select");
341 $(this.parent.options.wms_overlays).each(function(){
342 var name = this.name, server = this.server, layer = this.layer;
343 $(overlayloader.ConfigMapSelect).append("<option layer='"+layer+"' server='"+server+"' >"+name+"</option>");
344 });
345
346 $(this.ConfigLoaderTab).append(this.ConfigMapSelect);
347
348 this.loadConfigMapButton = document.createElement("button");
349 $(this.loadConfigMapButton).text("load Layer");
350 $(this.ConfigLoaderTab).append(this.loadConfigMapButton);
351
352 $(this.loadConfigMapButton).click($.proxy(function(){
353 var server = $(this.ConfigMapSelect).find(":selected").attr("server");
354 var layer = $(this.ConfigMapSelect).find(":selected").attr("layer");
355 this.distributeArcGISWMS(server,layer);
356 },this));
357
358 $(this.parent.gui.loaders).append(this.ConfigLoaderTab);
359 }
360 }
361
362 };