cl991036
管理员
管理员
  • 注册日期2003-07-25
  • 发帖数5917
  • QQ14265545
  • 铜币29669枚
  • 威望217点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • GIS帝国铁杆
阅读:1342回复:0

MapXtreme 2005学习(7):Web页面中实现鼠标中键缩放

楼主#
更多 发布于:2008-08-21 10:38
在MapXtreme 2005中,在Windows应用程序中自带鼠标中键缩放的功能,而有Web应用程序中却没有,如果能够实现会显得更加人性化。在百度里面一搜,还真有位高人实现了,于是借鉴了一下,作了一些修改,在这里和大家共享一下,你可能通过修改程序代码,控制每次缩放的比例,也可以选择等差或等比的方式进行缩放,代码比较简单,只要稍作修改就可以实现。<br><br> <br><br>(1)在页面的</form>之前添加如下JavaScript代码:<br><br> <br><script type="text/javascript">       <br>var Img = document.getElementById("MapControl1_Image");<br>if(Img != null)<br>{<br>   Img.attachEvent('onmousewheel', GetMouseWheelEvent);<br>}<br>function GetMouseWheelEvent()<br>{<br>    var mapImage = document.getElementById("MapControl1_Image");<br>    var url = "MapController.ashx?Command=WheelZoom;Width=" + mapImage.width +";Height=" + mapImage.height<br>     + ";ExportFormat=" + mapImage.exportFormat + ";Ran=" + Math.random() + ";wheelvalue=" + event.wheelDelta;<br>    if (mapImage.mapAlias) <br>        url +=  ";MapAlias=" + mapImage.mapAlias;    <br>    try <br>    {<br>        mapImage.src = url;<br>    }<br>    catch(e)<br>    { <br>        alert("Error!");<br>    }<br>}<br></script><br><br> <br><br>(2)在后台代码中,如自定义命令的文件CustomerCommands.cs中的添加如下类:<br><br> <br>    [Serializable]<br>    public class WheelZoom : MapBaseCommand<br>    {<br>        public WheelZoom()<br>        {<br>            Name = "WheelZoom";<br>        }<br><br>        public override void Process()<br>        {<br>            int wheelvalue = int.Parse(System.Convert.ToString(HttpContext.Current.Request["wheelvalue"]));<br>          <br>            MapControlModel model = MapControlModel.GetModelFromSession();<br>            model.SetMapSize(MapAlias, MapWidth, MapHeight);<br>            try<br>            {<br>                MapInfo.Mapping.Map map = model.GetMapObj(MapAlias);<br><br>                MapInfo.Geometry.Distance d;<br>                if (wheelvalue > 0)<br>                {<br>                    d = new MapInfo.Geometry.Distance(map.Zoom.Value * 0.5, map.Zoom.Unit);<br>                }<br>                else<br>                {<br>                    d = new MapInfo.Geometry.Distance(map.Zoom.Value * 2, map.Zoom.Unit);<br>                }<br>                map.Zoom = d;<br>            }<br>            finally<br>            {<br>                System.IO.MemoryStream ms = model.GetMap(MapAlias, MapWidth, MapHeight, ExportFormat);<br>                StreamImageToClient(ms);<br>            }<br>        }<br>    }<br><br> <br><br>(3)在页面加载处注册Command:<br><br> <br>if(Session.IsNewSession)<br>{<br>    MapControlModel model = MapControlModel.SetDefaultModelInSession();<br>    model.Commands.Add(new WheelZoom());<br>}<br><br> <br><br>完毕,运行在页面地图上滚动鼠标中间键即可看到效果。
喜欢0 评分0
没钱又丑,农村户口。头可断,发型一定不能乱。 邮箱:gisempire@qq.com
游客

返回顶部