⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 maphandler.ashx

📁 GIS WEB系统
💻 ASHX
字号:
<%@ WebHandler Language="C#" Class="MapHandler" %>

using System;
using System.Web;

/// <summary>
/// The maphandler class takes a set of GET or POST parameters and returns a map as PNG (this reminds in many ways of the way a WMS server work).
/// Required parameters are: WIDTH, HEIGHT, ZOOM, X, Y, MAP
/// </summary>
public class MapHandler : IHttpHandler
{

	internal static System.Globalization.NumberFormatInfo numberFormat_EnUS = new System.Globalization.CultureInfo("en-US", false).NumberFormat;

    public void ProcessRequest (HttpContext context) {
		int Width = 0;
		int Height = 0;
		double centerX = 0;
		double centerY = 0;
		double Zoom = 0;

		//Parse request parameters
		if (!int.TryParse(context.Request.Params["WIDTH"], out Width))
			throw (new ArgumentException("Invalid parameter"));
		if (!int.TryParse(context.Request.Params["HEIGHT"], out Height))
			throw (new ArgumentException("Invalid parameter"));
		if (!double.TryParse(context.Request.Params["ZOOM"], System.Globalization.NumberStyles.Float, numberFormat_EnUS, out Zoom))
			throw (new ArgumentException("Invalid parameter"));
		if (!double.TryParse(context.Request.Params["X"], System.Globalization.NumberStyles.Float, numberFormat_EnUS, out centerX))
			throw (new ArgumentException("Invalid parameter"));
		if (!double.TryParse(context.Request.Params["Y"], System.Globalization.NumberStyles.Float, numberFormat_EnUS, out centerY))
			throw (new ArgumentException("Invalid parameter"));
		if (context.Request.Params["MAP"] == null)
			throw (new ArgumentException("Invalid parameter"));
		//Params OK

		SharpMap.Map map = InitializeMap(context.Request.Params["MAP"], new System.Drawing.Size(Width, Height));
		if (map == null)
			throw (new ArgumentException("Invalid map"));

		//Set visible map extents
		map.Center = new SharpMap.Geometries.Point(centerX, centerY);
		map.Zoom = Zoom;
		//Generate map
		System.Drawing.Bitmap img = (System.Drawing.Bitmap)map.GetMap();

		//Stream the image to the client
		context.Response.ContentType = "image/png";
		System.IO.MemoryStream MS = new System.IO.MemoryStream();
		img.Save(MS, System.Drawing.Imaging.ImageFormat.Png);
		// tidy up  
		img.Dispose();
		byte[] buffer = MS.ToArray();
		context.Response.OutputStream.Write(buffer, 0, buffer.Length);
    }

	private SharpMap.Map InitializeMap(string MapID, System.Drawing.Size size)
	{
		//Set up the map. We use the method in the App_Code folder for initializing the map
		switch (MapID)
		{
			//Our simple world map was requested 
			case "SimpleWorld":
				return MapHelper.InitializeMap(size);
			//Gradient theme layer requested. Based on simplemap
			case "Gradient":
				return MapHelper.InitializeGradientMap(size);
			case "WmsClient":
				return MapHelper.InitializeWmsMap(size);
			default:
				throw new ArgumentException("Invalid map '" + MapID + "' requested"); ;
		}
	}
	
    public bool IsReusable {
        get {
            return false;
        }
    }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -