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);
}
}