diff --git a/examples/draggingGoogle.html b/examples/smoothDragging.html similarity index 70% rename from examples/draggingGoogle.html rename to examples/smoothDragging.html index c5b0c0f685..834d78a59f 100755 --- a/examples/draggingGoogle.html +++ b/examples/smoothDragging.html @@ -8,7 +8,8 @@ } - + + -

OpenLayers With Responsive Google Dragging

+

OpenLayers With Responsive Dragging

Uses Google Maps v2.82

diff --git a/lib/OpenLayers/Layer/VirtualEarth.js b/lib/OpenLayers/Layer/VirtualEarth.js index 8518d3c60a..e55bf4d5ba 100644 --- a/lib/OpenLayers/Layer/VirtualEarth.js +++ b/lib/OpenLayers/Layer/VirtualEarth.js @@ -103,10 +103,28 @@ OpenLayers.Layer.VirtualEarth = OpenLayers.Class( if (this.mapObject != null) { try { // this is to catch a Mozilla bug without falling apart - this.mapObject.LoadMap(null, null, this.type); + + // The fourth argument is whether the map is 'fixed' -- not + // draggable. See: + // http://blogs.msdn.com/virtualearth/archive/2007/09/28/locking-a-virtual-earth-map.aspx + // + this.mapObject.LoadMap(null, null, this.type, true); + this.mapObject.AttachEvent("onmousedown", function() {return true; }); + } catch (e) { } this.mapObject.HideDashboard(); } + + //can we do smooth panning? this is an unpublished method, so we need + // to be careful + if ( !this.mapObject || + !this.mapObject.vemapcontrol || + !this.mapObject.vemapcontrol.PanMap || + (typeof this.mapObject.vemapcontrol.PanMap != "function")) { + + this.dragPanMapObject = null; + } + }, /** @@ -169,6 +187,17 @@ OpenLayers.Layer.VirtualEarth = OpenLayers.Class( return this.mapObject.GetCenter(); }, + /** + * APIMethod: dragPanMapObject + * + * Parameters: + * dX - {Integer} + * dY - {Integer} + */ + dragPanMapObject: function(dX, dY) { + this.mapObject.vemapcontrol.PanMap(dX, -dY); + }, + /** * APIMethod: getMapObjectZoom *