MapXtreme for .net實現鼠標中鍵縮放地圖

 

鼠標中鍵縮放地圖要用到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()); }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章