Post Page Advertisement [Top]

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

Bottom Ad [Post Page]