0

Konum tabanlı uygulamalar çok yaygın olarak kullanılıyor ve çok yaratıcı fikirler çıkabiliyor. Bu yüzden bu yazımda Windows Phone Map kontrolünü kullanarak, konumumuzu harita üzerinde gösteren basit bir uygulamayı adım adım nasıl yaparız anlatmaya çalışacağım. Bu yazımın sonunda Map kontrolü ve Windows Phone API içinde bulunan Geolocator sınıfı hakkında bilgiler edineceksiniz.

Yeni bir Windows Phone projesi açarak başlayalım, açtığımız projeye bir adet map kontrolü ekleyip tüm ekrana yayılacak şekilde Design kısmından ayarlayalım.


Resim-1

C# kodumuzda kullanacağımız için, XAML kısmında eklediğimiz map kontrolünün Name attribute’ne  isim vermeliyiz.


Resim-2

MainPage’in Loaded event’ı ile ilgileneceğiz. InitializeComponent(); altına Loaded += yazdıktan sonra bir kere TAB’a bastığınızda MainPage_Loaded eklenecek, bir kere daha TAB’a bastığınızda handler otomatik olarak oluşacak ve kodlarımızı yazmaya başlayacağız.


Resim-3


Resim-4

Haritayı güncellemeyi ayrı bir metot  üzerinden yapacağım için bir metot oluşturdum, Haritada konum göstereceğimiz için cihazın GPS sistemini kullanan Geolocator sınıfına ihtiyacımız var. Geolocator sınıfını kullanmamız için Windows.Devices.Geolocation namespace’ini eklememiz gerekiyor. Üstüne geldiğinizde tek tıklamayla namespace’i ekleyebilirsiniz.


Resim-5

Geoposition sınıfını kullanarakta, geolocator’dan gelecek koordinatları alacağız. En sonunda Map’imizin SetView’ini de latitute, longtitude ve yakınlaştırma derecesini vererek konumumuzu haritada göstermeye hazır hale getireceğiz. Unutmamız gereken şey, konumu alırken await kullandığımız için metotu async yapmalıyız.


Resim-6

Ve MainPage_Loaded handler’ın içinde yazdığımız  HaritayiGuncelle(); metotunu çağırmalıyız.


Resim-7

Başka bir değişiklik yapmadan projeyi çalıştırdığımızda hata verecek çünkü Map kontrolü Mapping ve Location Capability’lere gereksinim duyar. Bunları açmak için;

Prefences – WMAppManifest.xml – Capabilities konumunu izleyip ID_CAP_LOCATION ve ID_CAP_MAP seçili hale geldiğinden emin olun.


Resim-8

Emülatorde çalıştırdığınızda sürekli aynı yer gelecek karşınıza, endişelenmeyin kodunuz sorunsuz çalışıyor demektir eğer Redmond ise emülatorde gözüken konum. Emülator bir sanal makina olduğu için konum servisini kullandığımızda Windows Phone emülator bize Microsoft HQ konumunu gösteriyor. Eğer fiziksel bir cihazda uygulamayı çalıştırırsanız sorunsuz çalıştığını göreceksiniz.


Resim-9

Herşey güzel fakat herhangi bir yer gösterici yok. Bunun için birkaç satır kod yazmamız gerekiyor.

var overlay = new MapOverlay { GeoCoordinate = new GeoCoordinate(position.Coordinate.Latitude,

position.Coordinate.Longitude) };

 

var img = new Image { Width = 56, Height = 56 };

img.Source = new BitmapImage { UriSource = new Uri(“/Assets/mapmarker.png”, UriKind.Relative) };

 

overlay.Content = img;

 

var mapLayer = new MapLayer { overlay };

MapKontrol.Layers.Add(mapLayer);


Resim-10

Şimdi daha güzel oldu fakat alttaki Warning’ten kurtulmamız gerek. Bunun için Devcenter’dan uygulamanız için Authentication ID ve token almanız gerekiyor. Submit App’e girdiğinizde Map services kısmından gerekli id ve token’ı alabilirsiniz.


Resim-11

Kullanımı ise aşağıdaki şekilde.


Resim-12

Şimdi uygulamamı çalıştırdığımda herşey sorunsuz gözüküyor.


Resim-13

Bu konuyla ilgili sorularınızı  alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar

www.mshowto.org

Bu İçeriğe Tepkin Ne Oldu?
  • 2
    harika_
    Harika!!
  • 0
    be_enmedim
    Beğenmedim
  • 0
    _ok_iyi
    Çok iyi
  • 0
    sevdim_
    Sevdim!
  • 0
    bilemedim_
    Bilemedim!
  • 0
    olmad_
    Olmadı!
  • 0
    k_zd_m_
    Kızdım!

Maltepe Üniversitesi Yazılım Mühendisliği öğrencisiyim. Okul dışında Microsoft teknolojilerine ilgimden dolayı kendimi bu alanda geliştiriyorum. İlgi alanım Windows Phone ve Windows 8 başta olmak üzere Microsoft teknolojileri.

Yazarın Profili

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir