MapXtreme for .net实现鼠标中键缩放地图

鼠标中键缩放地图要用到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>

第二步,在后台代码中,如自定义命令的文件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);
}
}
}

 

 

第三步,在页面注册WheelZoom
if(Session.IsNewSession)
{
MapControlModel model
= MapControlModel.SetDefaultModelInSession();
model.Commands.Add(
new WheelZoom());
}
posted on 2010-12-30 17:09  carekee  阅读(640)  评论(0编辑  收藏  举报