鼠标中键缩放地图要用到js,它的实现可以分为三步。
第一步,在页面的</form>之前添加如下JavaScript代码,(切忌一定要在</form>之前)
代码
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> < 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中的添加如下类:
代码
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> [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
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> if (Session.IsNewSession) { MapControlModel model = MapControlModel.SetDefaultModelInSession(); model.Commands.Add( new WheelZoom()); }