diff gis_gui/blocks/map_newwindow.html.pt @ 268:f25ee0424ce6

Open Map in new Window
author fknauft
date Fri, 27 Jan 2012 09:43:40 +0100
parents 0a1dee507612
children 3a5d51c60e40
line wrap: on
line diff
--- a/gis_gui/blocks/map_newwindow.html.pt	Wed Jan 25 20:45:13 2012 +0100
+++ b/gis_gui/blocks/map_newwindow.html.pt	Fri Jan 27 09:43:40 2012 +0100
@@ -1,15 +1,116 @@
-<html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+  tal:define="mapParams python:request.get('map_params',None)">
   <head>
     <title tal:content="template/title">Map Points in Time</title>
-    <script language="JavaScript" src="lib/jquery-1.4.min.js"> </script>
-    <script language="JavaScript" src="lib/blocks.js"> </script>
-    <script language="JavaScript" src="lib/jquery.clickmenu.pack.js"> </script>
+    <script type="text/javascript" language="JavaScript" src="lib/jquery-1.4.2.js"> </script>
+    <script type="text/javascript" language="JavaScript" src="lib/blocks.js"> </script>
+    <script type="text/javascript" language="JavaScript" src="lib/map.js"> </script>
+    <script type="text/javascript" language="JavaScript" src="lib/jquery.clickmenu.pack.js"> </script>
+    <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
+    <script type="text/javascript" language="JavaScript" >
+     
+ 	function updateMap(elem,map_params) {
+    
+	    //************
+	    console.debug("updateMap:", elem, ", ", map_params);
+	   //*************
+	
+		if (elem == null) {
+	        elem = this.element;
+	    }
+	    if (map_params == null) {
+	        map_params = this.params;
+	    }
+	    // update and draw the google map
+	    var le = $(elem).find(".map_box").get(0);
+	    // create empty map
+	    
+	    if (google != null) {
+	        var latlng = new google.maps.LatLng(29, 116);
+	        var mapOpts = {
+	                zoom: 2,
+	                center: latlng,
+	                mapTypeId: google.maps.MapTypeId.TERRAIN,
+	                scaleControl: true
+	        };
+	        var map = new google.maps.Map(le, mapOpts);
+	        console.debug("new google map=",map," on el=",le);
+	    }
+	    // add the layers
+	    var layerList = map_params.map_layers;
+	    for (var i = 0; i < layerList.length; i++) {
+	        if (!layerList[i].display) {
+	            continue;
+	        }
+	        var params = layerList[i].layer;
+	        var paramstr = "format=KML_URL";
+	        if (params.position_field && params.position_field != "Default") {
+	            paramstr += "&gis_id_field="+params.position_field;
+	        }
+	        if (params.color_field != "Default") {
+	            paramstr += "&color_field="+params.color_field;
+	        }
+	        if (params.geometry_field != "Default") {
+	            paramstr += "&geometry_field="+params.geometry_field;
+	        }
+	        if (params.sort_field != "Default") {
+	            paramstr += "&sort_field="+params.sort_field;
+	        }
+	        if (params.connect_line) {
+	            paramstr += "&connect_line="+params.connect_line;
+	        }
+	        var layerurl = "../db/RESTdb/db/public/" + escape(params.table) + "?" + paramstr;
+	        jQuery.get(layerurl, function (data, textStatus, XMLHttpRequest) {
+	            // function after load kml url finished
+	            console.debug("kml url loaded! this=", this );
+	            console.debug("                data=", data );
+	            console.debug("                data type=", typeof(data));
+	            if (typeof(data) == "string") {
+	                var kmlURL = data;
+	            } else {
+	                // broken, what now?
+	                return;
+	            }
+	            // render layer
+	            if (google != null) {
+	                var newMarker=new google.maps.KmlLayer(kmlURL);
+	                console.debug("new marker layer no",i,"=",newMarker);
+	                console.debug("           map=",map);
+	                newMarker.setMap(map);
+	                console.debug("Map-Update finished");
+	            }
+	        });
+	    }
+	    return map;
+	};
+	
+    function loadListOfItems(storeTag,storeType,callback) {
+        // loads list of id and type objects and executes callback function
+        var url = "../db/RESTjson/db/public/gui_objects/"+escape(storeTag)+"/"+storeType+"?recursive=true";
+
+	    //************
+	    console.debug("jsonUrl:", url);
+	   //*************
+
+        jQuery.getJSON(url,callback);   
+
+	    //************
+	    console.debug("jsoncallback:", callback);
+	   //*************
+    };
+    </script>
 
     <link href="lib/clickmenu.css"  rel="stylesheet" content="text/css"/>
     <link href="lib/blocks.css"  rel="stylesheet" content="text/css"/>
+    <link href="lib/map.css"  rel="stylesheet" content="text/css"/>
   </head>
-  <body>
+  <body tal:attributes="onload string:updateMap($here,'$mapParams')" >
+   <tal:block metal:use-macro="here/template/macros/module">
+    <tal:block metal:fill-slot="content">
+  
+      <div class="map_box">[loading...]</div>
 
-      <div class="map_box" id="map_box">[loading...]</div>
+    </tal:block>
+   </tal:block>
   </body>
 </html>
\ No newline at end of file