鼠标中键缩放地图要用到js,它的实现可以分为三步。
第一步,在页面的</form>之前添加如下JavaScript代码,(切忌一定要在</form>之前)
代码
<
script type
=
"
text/javascript
"
>
var Img = document.getElementById( " MapControl1_Image " );
if (Img != null )
{
Img.attachEvent( ' onmousewheel ' , GetMouseWheelEvent);
}
function GetMouseWheelEvent()
{
var mapImage = document.getElementById( " MapControl1_Image " );
var url = " MapController.ashx?Command=WheelZoom&Width= " + mapImage.width + " &Height= " + mapImage.height
+ " &ExportFormat= " + mapImage.exportFormat + " &Ran= " + Math.random() + " &wheelvalue= " + event .wheelDelta;
if (mapImage.mapAlias)
url += " &MapAlias= " + mapImage.mapAlias;
try
{
mapImage.src = url;
}
catch (e)
{
alert( " Error! " );
}
}
</ script >
var Img = document.getElementById( " MapControl1_Image " );
if (Img != null )
{
Img.attachEvent( ' onmousewheel ' , GetMouseWheelEvent);
}
function GetMouseWheelEvent()
{
var mapImage = document.getElementById( " MapControl1_Image " );
var url = " MapController.ashx?Command=WheelZoom&Width= " + mapImage.width + " &Height= " + mapImage.height
+ " &ExportFormat= " + mapImage.exportFormat + " &Ran= " + Math.random() + " &wheelvalue= " + event .wheelDelta;
if (mapImage.mapAlias)
url += " &MapAlias= " + mapImage.mapAlias;
try
{
mapImage.src = url;
}
catch (e)
{
alert( " Error! " );
}
}
</ script >
第二步,在后台代码中,如自定义命令的文件CustomCommands.cs中的添加如下类:
代码
[Serializable]
public class WheelZoom : MapBaseCommand
{
public WheelZoom()
{
Name = " WheelZoom " ;
}
public override void Process()
{
int wheelvalue = int .Parse(System.Convert.ToString(HttpContext.Current.Request[ " wheelvalue " ]));
MapControlModel model = MapControlModel.GetModelFromSession();
model.SetMapSize(MapAlias, MapWidth, MapHeight);
try
{
MapInfo.Mapping.Map map = model.GetMapObj(MapAlias);
MapInfo.Geometry.Distance d;
if (wheelvalue > 0 )
{
d = new MapInfo.Geometry.Distance(map.Zoom.Value * 0.5 , map.Zoom.Unit);
}
else
{
d = new MapInfo.Geometry.Distance(map.Zoom.Value * 2 , map.Zoom.Unit);
}
map.Zoom = d;
}
finally
{
System.IO.MemoryStream ms = model.GetMap(MapAlias, MapWidth, MapHeight, ExportFormat);
StreamImageToClient(ms);
}
}
}
public class WheelZoom : MapBaseCommand
{
public WheelZoom()
{
Name = " WheelZoom " ;
}
public override void Process()
{
int wheelvalue = int .Parse(System.Convert.ToString(HttpContext.Current.Request[ " wheelvalue " ]));
MapControlModel model = MapControlModel.GetModelFromSession();
model.SetMapSize(MapAlias, MapWidth, MapHeight);
try
{
MapInfo.Mapping.Map map = model.GetMapObj(MapAlias);
MapInfo.Geometry.Distance d;
if (wheelvalue > 0 )
{
d = new MapInfo.Geometry.Distance(map.Zoom.Value * 0.5 , map.Zoom.Unit);
}
else
{
d = new MapInfo.Geometry.Distance(map.Zoom.Value * 2 , map.Zoom.Unit);
}
map.Zoom = d;
}
finally
{
System.IO.MemoryStream ms = model.GetMap(MapAlias, MapWidth, MapHeight, ExportFormat);
StreamImageToClient(ms);
}
}
}
第三步,在页面注册WheelZoom
if
(Session.IsNewSession)
{
MapControlModel model = MapControlModel.SetDefaultModelInSession();
model.Commands.Add( new WheelZoom());
}
{
MapControlModel model = MapControlModel.SetDefaultModelInSession();
model.Commands.Add( new WheelZoom());
}