give the ve layer smooth (but safe) dragging. just like google layer. (Closes #1161) (See #1053)

git-svn-id: http://svn.openlayers.org/trunk/openlayers@5227 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
euzuro
2007-11-21 07:54:45 +00:00
parent b89126ae20
commit cd9ee75a73
2 changed files with 46 additions and 4 deletions

View File

@@ -8,7 +8,8 @@
}
</style>
<script src='http://maps.google.com/maps?file=api&amp;v=2.82&amp;key=ABQIAAAAjpkAC9ePGem0lIq5XcMiuhR_wWLPFku8Ix9i2SXYRVK3e45q1BQUd_beF8dtzKET_EteAjPdGDwqpQ'></script>
<script src='http://maps.google.com/maps?file=api&amp;v=2.82&amp;key=ABQIAAAAjpkAC9ePGem0lIq5XcMiuhQtCjFYhdtNUZyqZQW2mFbq_dOIHBSGvjZ-C7_tXAXYdB-ehlOacmC_xA'></script>
<script src='http://dev.virtualearth.net/mapcontrol/v3/mapcontrol.js'></script>
<script src="../lib/OpenLayers.js"></script>
<script type="text/javascript">
@@ -36,6 +37,18 @@
{'sphericalMercator': true}
);
// create Virtual Earth layers
var ve = new OpenLayers.Layer.VirtualEarth(
"Virtual Earth Raods",
{'type': VEMapStyle.Road, 'sphericalMercator': true}
);
// create Virtual Earth layers
var ve = new OpenLayers.Layer.VirtualEarth(
"Virtual Earth Raods",
{'type': VEMapStyle.Road, 'sphericalMercator': true}
);
// create WMS layer
var wms = new OpenLayers.Layer.WMS(
"World Map",
@@ -47,7 +60,7 @@
}
);
map.addLayers([gmap, wms]);
map.addLayers([gmap, wms, ve]);
map.addControl(new OpenLayers.Control.LayerSwitcher());
map.zoomToMaxExtent()
}
@@ -55,7 +68,7 @@
</script>
</head>
<body onload="init()">
<h2>OpenLayers With Responsive Google Dragging</h3>
<h2>OpenLayers With Responsive Dragging</h3>
<h3>Uses Google Maps v2.82</h2>
<div id="map"></div>
</body>

View File

@@ -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
*