[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