Yazıma Başlamadan önce eğer bu konu ile ilgili bir önceki makaleyi okumamış iseniz okumanızı tavsiye ederim . Çükü bu makalemde onları bildiğinizi varsayarak yazıma devam ediyorum .

Bir önceki yazımda sizlere ASP.NET 2.0 ile nasıl Web tabanlı Coğrafi Bilgi Sistemi uygulaması geliştirebileceğimizi aktarmıştım . Tabii ki bu tür uygulamalar , haritayı ekranda göstermek , yakınlaştırma ve uzaklaştırma işlemlerini gerçekleştirmek ile bitmiyor . Elde etmiş olduğumuz sistem üzerinde bazı ek işlemler yapmamız gerekiyor . Bu işlemlerden bazlarını sıralayacak olursam : Çizgi çizdirme , belirli bir noktayı işaretleme gibi . Bu yazımda sizlere , biraz önce sıralamış olduklarımı aktarıyor olacağım .

İlk olarak haritamız üzerinde istediğimiz bir noktaya nasıl bir nokta yada bir resim ile belirleyebiliriz . Bu ve bundan sonra vereceğim örneklerde haritamızı oluşturmuş olduğumuzu göz önünde bulundurarak mevcut sistemimiz üzerine eklemeler yaparak devam edeceğim .
// sistem üzerinde ekleme yapacağımız noktaları bu değişkene aktaracağız
static SharpMap.Geometries.GeometryCollection kol = new SharpMap.Geometries.GeometryCollection(); //
protected void imgHarita_Click(object sender, ImageClickEventArgs e)
{
SharpMap.Geometries.Point belirlenenNokta = new SharpMap.Geometries.Point(29, 37.7);
//burada istersek fare ile işaretlenen noktayıda aldırabiliriz

kol.Collection.Add(belirlenenNokta);
SharpMap.Geometries.LineString yeni = new SharpMap.Geometries.LineString();

SharpMap.Layers.VectorLayer katmanBel = new SharpMap.Layers.VectorLayer(“KatmanBelirlenen”);
katmanBel.DataSource = new SharpMap.Data.Providers.GeometryProvider(belirlenenNokta);

katmanBel.Style.Symbol = new Bitmap(@”D:\gisUygulama\App_Data\ikon.png”);

harita.Layers.Add(katmanBel);
haritaOlustur();

}

Yukarıdaki kod blok`u sayesinde haritamız üzerinde bir yeri ikon.png resmi ile aşağıdaki resimde gördüğümüz şekli ile işaretlemiş olduk .

Eğer birden fazla noktayı aynı anda belirlemek istiyor iseniz ilk örneğimizdeki kodu aşağıdaki gibi değiştirmeliyiz .
SharpMap.Geometries.Point belirlenenNokta = new SharpMap.Geometries.Point(29, 37.7);
SharpMap.Geometries.Point belirlenenNokta1 = new SharpMap.Geometries.Point(30, 39);
//burada istersek fare ile işaretlenen noktayıda aldırabiliriz

kol.Collection.Add(belirlenenNokta);
kol.Collection.Add(belirlenenNokta1);

if (kol.Collection.Count < 2)
{

SharpMap.Geometries.LineString yeni = new SharpMap.Geometries.LineString();

SharpMap.Layers.VectorLayer katmanBel = new SharpMap.Layers.VectorLayer(“KatmanBelirlenen”);
katmanBel.DataSource = new SharpMap.Data.Providers.GeometryProvider(belirlenenNokta);

katmanBel.Style.Symbol = new Bitmap(@”D:\tahir\sharpmap2\App_Data\icon.png”);

harita.Layers.Add(katmanBel);
haritaOlustur();

}
else
{
for (int i = 0; i < kol.Collection.Count; i++)
{
kol.Collection.Add(belirlenenNokta);
}
SharpMap.Layers.VectorLayer katmanBel = new SharpMap.Layers.VectorLayer(“KatmanBelirlenen”);
katmanBel.DataSource = new SharpMap.Data.Providers.GeometryProvider(kol);
katmanBel.Style.Symbol = new System.Drawing.Bitmap(@”D:\tahir\sharpmap2\App_Data\icon.png”);
harita.Layers.Add(katmanBel);
haritaOlustur();

}

Vermiş olduğumuz noktaları bir işaretçi yardımı ile belirledikten sonra , şimdide belirleyeceğimiz iki nokta arasında nasıl bir yol çizdirebiliriz . Bunun için sayfama tetikleyici olarak bir adat buton ekledikten sonra , bu botunun tıklanma olayına aşağıdaki kodu ekleyelim .
protected void btnCiz_Click(object sender, EventArgs e)
{
SharpMap.Geometries.LineString yeniCizgi = new SharpMap.Geometries.LineString();

//yolumuzun geçeceği noktaları yeniCizgi ye ekliyoruz
yeniCizgi.Vertices.Add(new SharpMap.Geometries.Point(29, 37.7));
yeniCizgi.Vertices.Add(new SharpMap.Geometries.Point(30, 39));

SharpMap.Layers.VectorLayer katmanVek = new SharpMap.Layers.VectorLayer(“katmanVektör”);
katmanVek.DataSource = new SharpMap.Data.Providers.GeometryProvider(yeniCizgi);

//Oluşturacağımız yolun özelliklerini belirliyoruz
katmanVek.Style.Line = new Pen(Color.Red, 2);
katmanVek.SRID = 4326;
harita.Layers.Add(katmanVek);
haritaOlustur();

}
Ve uygulamamıza bu kodu ekledikten sonra çalıştırdığımızda aşağıdaki gibi bir görünüm elde etmiş oluyoruz . Burada bir sıkıntı yaşamış olabiliriz buda , yolu çizdirdikten sonra eğer haritamızı yakınlaştırır isek yol kaybolacaktır çünkü her yakınlaştırmada yol haritaOlustur(); fonksiyonu ile yeniden oluşturulmaktadır . Bunu da sizlerle paylaşacak olduğum 3. örnekte belirlemiş olduğumuz bir alanı yakınlaştırma ile çözüyor olacağız . Tabi sadece tek çözüm de bu değil .

Bu yazımda sizlerle paylaşacak olduğum son örnek ise belirlemiş olduğumuz bir alanı ekrana yaklaştırma örneği olacak . Bu örneğimizde yakınlaştırmak istediğimiz alan için kuzey-güney ve doğu batı sınırlarını belirlememiz yeterli oluyor .

protected void btnCiz_Click(object sender, EventArgs e)
{

//Yakınlaştırmak istediğimiz alanın koordinatlarını belirliyoruz
SharpMap.Geometries.BoundingBox yakinAlan = new SharpMap.Geometries.BoundingBox(new SharpMap.Geometries.Point(26, 36), new SharpMap.Geometries.Point(42, 45));
harita.ZoomToBox(yakinAlan);
haritaOlustur();

}

Bu yazımda sizlerle paylaşacak olduğum son örnek ise belirlemiş olduğumuz bir alanı ekrana yaklaştırma örneği olacak . Bu örneğimizde yakınlaştırmak istediğimiz alan için kuzey-güney ve doğu batı sınırlarını belirlememiz yeterli oluyor .
Eğer 2. ve 3. örneklerimizdeki kodları birleştirir isek , 2. örnekte yaşamış olduğumuz problemi çözmüş oluruz .

Bu ve bir önceki yazımda ASP:NET ile GIS uygulamaları üzerine sizlere temelden başlayarak bu tür uygulamalar nasıl geliştirebileceğinizi aktarmaya çalıştım . Yaşayacağınız problemlere benimle iletişime geçebilirsiniz . Tekrar görüşmek üzere .