一、在页面的</form>之前添加如下js代码:
<script type="text/javascript">
var Img = document.getElementById("MapControl1_Image");
if(Img != null)
{
Img.attachEvent('onmousewheel', bbb);
}
function bbb()
{
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;
var xmlHttp = CreateXMLHttp();
xmlHttp.open("GET", url, false);
xmlHttp.send(null);
try {
mapImage.src = url;
} catch(e) { alert("ll"); }
}
</script>
二、在后端代码添加如下类:
[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 myMap = model.GetMapObj("map1");
MapInfo.Geometry.Distance d = new MapInfo.Geometry.Distance(myMap.Zoom.Value * 0.1, myMap.Zoom.Unit);
if(wheelvalue > 0)
d = new MapInfo.Geometry.Distance(myMap.Zoom.Value -900, myMap.Zoom.Unit);
else
d = new MapInfo.Geometry.Distance(myMap.Zoom.Value + 900, myMap.Zoom.Unit);
myMap.Zoom = d;
}
finally
{
System.IO.MemoryStream ms = model.GetMap(MapAlias, MapWidth, MapHeight, ExportFormat);
StreamImageToClient(ms);
}
}
}
三、在页面加载处注册command:
if(!IsPostBack)
{
MapControlModel model = MapControlModel.SetDefaultModelInSession();
model.Commands.Add(new WheelZoom());
}
完毕,运行在页面地图上滚动鼠标中间键即可看到效果。