[Commits] r1521 - in sandbox/cmoullet/ux/StreetViewPanel: examples ux/widgets

commits at geoext.org commits at geoext.org
Sun Nov 29 15:38:57 CET 2009


Author: cmoullet
Date: 2009-11-29 15:38:57 +0100 (Sun, 29 Nov 2009)
New Revision: 1521

Modified:
   sandbox/cmoullet/ux/StreetViewPanel/examples/StreetViewPanelExample.js
   sandbox/cmoullet/ux/StreetViewPanel/ux/widgets/StreetViewPanel.js
Log:
Add permalink support


Modified: sandbox/cmoullet/ux/StreetViewPanel/examples/StreetViewPanelExample.js
===================================================================
--- sandbox/cmoullet/ux/StreetViewPanel/examples/StreetViewPanelExample.js	2009-11-29 08:52:18 UTC (rev 1520)
+++ sandbox/cmoullet/ux/StreetViewPanel/examples/StreetViewPanelExample.js	2009-11-29 14:38:57 UTC (rev 1521)
@@ -21,7 +21,7 @@
     };
 
     layer = new OpenLayers.Layer.Google(
-            "Google Street", {sphericalMercator: true});
+            "Google Street", {sphericalMercator: true}, {isBaseLayer: true, buffer: 1});
 
     var map = new OpenLayers.Map(options);
 
@@ -61,28 +61,7 @@
                 handler: function() {
                     var streetViewPanelItem = Ext.getCmp("streetViewPanelItem");
                     if (streetViewPanelItem) {
-                        if (streetViewPanelItem.panorama.navigationTool) {
-                            var permalink = window.location.href;
-                            if (OpenLayers.String.contains(permalink, '?')) {
-                                var end = permalink.indexOf('?');
-                                permalink = permalink.substring(0, end);
-                            }
-                            permalink = permalink + "?yaw=" + streetViewPanelItem.panorama.yaw;
-                            permalink = permalink + "&pitch=" + streetViewPanelItem.panorama.pitch;
-                            permalink = permalink + "&panoZoom=" + streetViewPanelItem.panorama.zoom;
-                            permalink = permalink + "&clickMode=" + streetViewPanelItem.panorama.clickMode;
-                            permalink = permalink + "&videoTimeInterval=" + streetViewPanelItem.panorama.videoTimeInterval;
-                            permalink = permalink + "&showTool=" + streetViewPanelItem.panorama.showTool;
-                            permalink = permalink + "&showLinks=" + streetViewPanelItem.panorama.showLinks;
-                            permalink = permalink + "&easting=" + streetViewPanelItem.panorama.map.getCenter().lon;
-                            permalink = permalink + "&northing=" + streetViewPanelItem.panorama.map.getCenter().lat;
-                            permalink = permalink + "&zoom=" + streetViewPanelItem.panorama.map.getZoom();
-                            permalink = permalink + "&panoEasting=" + streetViewPanelItem.panorama.navigationTool.geometry.x;
-                            permalink = permalink + "&panoNorthing=" + streetViewPanelItem.panorama.navigationTool.geometry.y;
-                            alert(permalink);
-                        } else {
-                            alert("Click in the map to select a panorama");
-                        }
+                       window.open(streetViewPanelItem.panorama.getPermalink(true));
                     }
 
                 }
@@ -131,10 +110,7 @@
             }
         ]
     });
-    var parameters = OpenLayers.Util.getParameters();
-    if (parameters.yaw) {
-        
-    }
+
     mapPanel = Ext.getCmp("mappanel");
     streetViewPanel = Ext.getCmp("streetviewpanel");
     viewport.doLayout();
@@ -144,6 +120,7 @@
     streetViewPanel.doLayout();
     viewport.doLayout();
 
-
-
+    var parameters = OpenLayers.Util.getParameters();
+    var streetViewPanelItemObj = Ext.getCmp("streetViewPanelItem");
+    streetViewPanelItemObj.setPermalink(parameters);
 });
\ No newline at end of file

Modified: sandbox/cmoullet/ux/StreetViewPanel/ux/widgets/StreetViewPanel.js
===================================================================
--- sandbox/cmoullet/ux/StreetViewPanel/ux/widgets/StreetViewPanel.js	2009-11-29 08:52:18 UTC (rev 1520)
+++ sandbox/cmoullet/ux/StreetViewPanel/ux/widgets/StreetViewPanel.js	2009-11-29 14:38:57 UTC (rev 1521)
@@ -98,10 +98,10 @@
     zoom: 0,
 
     /** api: config[panoramaLocation]
-     *  ``Number``  The panorama location
+     *  ``GLatLng``  The panorama location
      */
     /** private: property[panoramaLocation]
-     *  ``Number``  Panorama location
+     *  ``GLatLng``  Panorama location
      */
     panoramaLocation: null,
 
@@ -134,7 +134,7 @@
         this.panorama.map = this.map;
         this.panorama.yaw = this.yaw;
         this.panorama.pitch = this.pitch;
-        this.panorama.level = this.level;
+        this.panorama.zoom = this.zoom;
         this.panorama.showTool = this.showTool;
         this.panorama.showLinks = this.showLinks;
         this.panorama.clickMode = this.clickMode;
@@ -157,6 +157,37 @@
             panorama.navigationToolLayer.addFeatures([panorama.navigationTool]);
         };
 
+        this.panorama.getPermalink = function(complete) {
+            var permalink;
+            if (complete) {
+                permalink = window.location.href;
+                if (OpenLayers.String.contains(permalink, '?')) {
+                    var end = permalink.indexOf('?');
+                    permalink = permalink.substring(0, end);
+                }
+                permalink = permalink + "?";
+            } else {
+                permalink = '';
+            }
+            permalink = permalink + "yaw=" + this.yaw;
+            permalink = permalink + "&pitch=" + this.pitch;
+            permalink = permalink + "&panoZoom=" + this.zoom;
+            permalink = permalink + "&clickMode=" + this.clickMode;
+            permalink = permalink + "&videoTimeInterval=" + this.videoTimeInterval;
+            permalink = permalink + "&showTool=" + this.showTool;
+            permalink = permalink + "&showLinks=" + this.showLinks;
+            if (this.map) {
+                permalink = permalink + "&easting=" + this.map.getCenter().lon;
+                permalink = permalink + "&northing=" + this.map.getCenter().lat;
+                permalink = permalink + "&zoom=" + this.map.getZoom();
+            }
+            if (this.navigationTool) {
+                permalink = permalink + "&panoEasting=" + this.navigationTool.geometry.x;
+                permalink = permalink + "&panoNorthing=" + this.navigationTool.geometry.y;
+            }
+            return permalink;
+        };
+
         // Draw link in map
         this.panorama.drawLinkTool = function(panorama, position, links) {
             // Destroy the existing features
@@ -438,6 +469,37 @@
         }
     },
 
+    // Set the permalink
+    setPermalink: function(parameters) {
+        if (parameters.yaw) {
+            if (parameters.easting && parameters.northing) {
+                var position = new OpenLayers.LonLat(parseFloat(parameters.easting), parseFloat(parameters.northing));
+                if (this.map) {
+                    this.map.setCenter(position);
+                }
+            }
+            if (parameters.zoom) {
+                if (this.map) {
+                    this.map.zoomTo(parseInt(parameters.zoom));
+                }
+            }
+            this.panorama.yaw = parseFloat(parameters.yaw);
+            this.panorama.pitch = parseFloat(parameters.pitch);
+            this.panorama.zoom = parseInt(parameters.panoZoom);
+            this.panorama.clickMode = parameters.clickMode;
+            this.panorama.videoTimeInterval = parameters.videoTimeInterval;
+            this.panorama.showTool = parameters.showTool;
+            this.panorama.showLinks = parameters.showLinks;
+            if (parameters.panoEasting && parameters.panoNorthing) {
+                var positionPano = new OpenLayers.LonLat(parseFloat(parameters.panoEasting), parseFloat(parameters.panoNorthing));
+                positionPano.transform(this.map.getProjectionObject(), new OpenLayers.Projection("EPSG:4326"));
+                var featurePosition = new GLatLng(positionPano.lat, positionPano.lon);
+                this.streetviewclient.getNearestPanorama(featurePosition, this.panorama.callback.createDelegate(this));
+            }
+        }
+        return;
+    },
+
     beforeDestroy: function() {
         if (this.clickMode) {
             if (this.map) {



More information about the Commits mailing list