Web页面中实现鼠标中键缩放

在MapXtreme 2005中,在Windows应用程序中自带鼠标中键缩放的功能,而有Web应用程序中却没有,如果能够实现会显得更加人性化。在百度里面一搜,还真有位高人实现了,于是借鉴了一下,作了一些修改,在这里和大家共享一下,你可能通过修改程序代码,控制每次缩放的比例,也可以选择等差或等比的方式进行缩放,代码比较简单,只要稍作修改就可以实现。
复制内容到剪贴板
代码:
(1)在页面的</form>之前添加如下JavaScript代码:


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


(2)在后台代码中,如自定义命令的文件CustomerCommands.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);
}
}
}


(3)在页面加载处注册Command:


if(Session.IsNewSession)
{
MapControlModel model = MapControlModel.SetDefaultModelInSession();
model.Commands.Add(new WheelZoom());
}
UID1 帖子177 精华1 积分489 阅读权限200 在线时间85 小时 注册时间2008-7-18 最后登录2009-3-13 查看详细资料
TOP
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值