Webページのプログラム

最後に、地図を生成するプログラムを記述します。

リスト11 Default.aspx.cs抜粋 - 地図を表示するプログラム


    (中略)
    using System.Drawing;
    using SharpMap;
    using SharpMap.Web;
    using SharpMap.Utilities;
    using SharpMap.Layers;
    using SharpMap.Data.Providers;

    public partial class _Default : System.Web.UI.Page 
    {
        Map _Map;     //地図を表す変数

        //ページ表示時のイベント
        protected void Page_Load(object sender, EventArgs e)
        {
            _Map = new Map(new Size((int)imgJapan.Width.Value, 
                                                       (int)imgJapan.Height.Value));
            _Map.BackColor = Color.LightBlue;
            VectorLayer layer = new VectorLayer("行政区域");
            layer.DataSource = new ShapeFile(
                       Server.MapPath(@"~\App_data\bnda_1_1.shp"));
            layer.Style.Fill = Brushes.GreenYellow;
            layer.Style.Outline = Pens.Green;
            layer.Style.EnableOutline = true;
            _Map.Layers.Add(layer);
            _Map.ZoomToExtents();

            if (!Page.IsPostBack) //初期表示時
            {
                //地図を生成して、キャッシュに登録
                string cacheKey = Caching.InsertIntoCache(1, _Map.GetMap    ());
                    //表示する画僧のURLを「ShowMap.aspxとキャッシュ」に設定
                imgJapan.ImageUrl = String.Format("ShowMap.aspx?id={0}",cacheKey);
            }
        }

        //ImageButtonコントロールをクリックしたときのイベント
        protected void imgJapan_Click(object sender, ImageClickEventArgs e)
        {
            //クリック位置から地図のセンターを設定して、キャッシュに登録
            SharpMap.Geometries.Point p = _Map.ImageToWorld(new PointF(e.X, e.Y));
            _Map.Center.X = p.X;
            _Map.Center.Y = p.Y;
            string cacheKey = Caching.InsertIntoCache(1, _Map.GetMap());
            imgJapan.ImageUrl = String.Format("ShowMap.aspx?id={0}",cacheKey);
        }
    }