Bu makalede HERE Maps
Servislerine giriş yapacağız bu bağlamda ReverseGeocode servisinden başlayıp
POI’lerimize tap durmunda çeşitli aksiyomlar alacağız.
İlk olarak konumum POI sine(kırmızı olan poı) kullanıcı
dokunduğunda konum bilgisinin HERE Maps servisi vasıtasıyla elde edilmesini
öğrenelim.
Bunu için daha önce oluşturuduğumuz DrawMyPosition metoduna
aşagıdakş Tap kodunu ekeleyelim.
currentpos.Tap += currentpos_Tap;
Serivis için bi tanımlama yapalım:
private ReverseGeocodeQuery MyReverseGeocodeQuery = null;
sonra:
void currentpos_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
CurrentPosition p = (CurrentPosition)sender;
GeoCoordinate geoCoordinate = (GeoCoordinate)p.Tag;
if (MyReverseGeocodeQuery == null || !MyReverseGeocodeQuery.IsBusy)
{
MyReverseGeocodeQuery = new ReverseGeocodeQuery();
MyReverseGeocodeQuery.GeoCoordinate
= new GeoCoordinate(geoCoordinate.Latitude,
geoCoordinate.Longitude);
MyReverseGeocodeQuery.QueryCompleted +=
MyReverseGeocodeQuery_QueryCompleted;
MyReverseGeocodeQuery.QueryAsync();
}
}
Yukarıda görüldüğü gibi ReverseGeoCode serivisne bir
sorgu gönderiyoruz ve cevabın dönmesini bekliyoruz.BU sorgu(query) bizim enlem
ve konum bilgimizi içeriyor.
Cevap döndüğünde ise aşağıdaki gibi bir messagebox ile
kullanıcıyı bilgilendirelim:
void MyReverseGeocodeQuery_QueryCompleted(object sender, QueryCompletedEventArgs<IList<MapLocation>> e)
{
if (e.Error == null)
{
if (e.Result.Count > 0)
{
MapAddress address =
e.Result[0].Information.Address;
String msgBoxText = "";
if (address.Street.Length >
0)
{
msgBoxText += "\n" +
address.Street;
if (address.HouseNumber.Length
> 0) msgBoxText += " " + address.HouseNumber;
}
if (address.PostalCode.Length
> 0) msgBoxText += "\n" + address.PostalCode;
if (address.City.Length > 0)
msgBoxText += "\n" + address.City;
if (address.Country.Length >
0) msgBoxText += "\n" + address.Country;
MessageBox.Show(msgBoxText, "Konum Bilgisi", MessageBoxButton.OK);
}
else
{
MessageBox.Show("Veri alınamadı.", AppResources.ApplicationTitle,
MessageBoxButton.OK);
}
MyReverseGeocodeQuery.Dispose();
}
}
Görüldüğü gibi dönen cevap adres,il,ilçe,sokak,posta kodu
gibi bir çok veriyi içeriyor biz işimize yarayanları ayıklayabiliriz. Sonuç
olarak aşağıdaki gibi bir ekran görüntüsü beklemeliyiz.
Tap eventlerine değinmişken
kullanıcı diğer çizdiğimiz mavi poilere tıkladığında da bilgi alaması için
örnek bir senaryo olarak POI adı ve enlemini messagebox’ta görmüş olsun.
Bunun için DrawPOIs metodunda Tap
eventi fırlatalım:
pos.Tap += pos_Tap;
void pos_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
CurrentPosition p = (CurrentPosition)sender;
if (p != null)
{
POIItem Product = p.DataContext as POIItem;
string ıd1 = Product.name;
string ıd2 = Product.latitude.ToString();
MessageBox.Show(ıd2, ıd1, MessageBoxButton.OK);
}
}
Uygulama kodu burada,iyi çalışmalar…
Hiç yorum yok:
Yorum Gönder