Coğrafi kodlama ve ters coğrafi kodlama gerçekleştirme

Önemli

UWP MapControl ve Windows Haritalar platform API'leri (Windows.Services.Maps.*) kullanım dışıdır ve Windows'un gelecekteki sürümlerinde kullanılamayabilir. Daha fazla bilgi için bkz. Kullanım dışı bırakılan özellikler için kaynaklar.

Önemli

Bing Maps for Enterprise hizmetinin kullanımdan kaldırılması

UWP MapControl ve Windows.Services.Maps ad alanlarındaki harita hizmetleri Bing Haritalar'a dayanır. Bing Kurumsal Haritalar kullanımdan kaldırılmıştır ve kullanımdan kaldırılacaktır. Bu noktada MapControl ve hizmetler artık veri almaz.

Daha fazla bilgi için Bing Haritalar Geliştirici Merkezi ve Bing Haritalar belgelerine bakın.

Uyarı

MapControl ve harita hizmetleri, MapServiceTokenadlı bir haritalar kimlik doğrulama anahtarı gerektirir. Haritalar kimlik doğrulama anahtarını alma ve ayarlama hakkında daha fazla bilgi için bkz. Haritalar kimlik doğrulama anahtarı isteme.

Bu kılavuzda, Windows.Services.Maps ad alanında MapLocationFinder sınıfının yöntemlerini çağırarak sokak adreslerini coğrafi konumlara (coğrafi kodlama) dönüştürme ve coğrafi konumları sokak adreslerine dönüştürme (ters coğrafi kodlama) gösterilmektedir.

Coğrafi kodlama ve ters coğrafi kodlama ile ilgili sınıflar aşağıdaki gibi düzenlenir.

Önemli

 Harita hizmetlerini kullanabilmeniz için önce bir haritalar kimlik doğrulama anahtarı belirtmeniz gerekir. Daha fazla bilgi için bkz. Haritalar için kimlik doğrulama anahtarı isteme.

Konum alma (Coğrafi kod)

Bu bölümde, bir sokak adresinin veya yer adının coğrafi konuma (coğrafi kodlama) nasıl dönüştürüldüğü gösterilir.

  1. MapLocationFinder sınıfının FindLocationsAsync yönteminin aşırı yüklemelerinden birini bir yer adı veya sokak adresiyle çağırın.
  2. FindLocationsAsync yöntemi bir MapLocationFinderResult nesnesi döndürür.
  3. Konumları özelliğini kullanarak MapLocationFinderResult ile bir MapLocation nesneleri koleksiyonunu kullanıma sunun. Birden fazla MapLocation nesnesi olabilir çünkü sistem, verilen girişe karşılık gelen birden fazla konum bulabilir.
using Windows.Services.Maps;
using Windows.Devices.Geolocation;
...
private async void geocodeButton_Click(object sender, RoutedEventArgs e)
{
   // The address or business to geocode.
   string addressToGeocode = "Microsoft";

   // The nearby location to use as a query hint.
   BasicGeoposition queryHint = new BasicGeoposition();
   queryHint.Latitude = 47.643;
   queryHint.Longitude = -122.131;
   Geopoint hintPoint = new Geopoint(queryHint);

   // Geocode the specified address, using the specified reference point
   // as a query hint. Return no more than 3 results.
   MapLocationFinderResult result =
         await MapLocationFinder.FindLocationsAsync(
                           addressToGeocode,
                           hintPoint,
                           3);

   // If the query returns results, display the coordinates
   // of the first result.
   if (result.Status == MapLocationFinderStatus.Success)
   {
      tbOutputText.Text = "result = (" +
            result.Locations[0].Point.Position.Latitude.ToString() + "," +
            result.Locations[0].Point.Position.Longitude.ToString() + ")";
   }
}

Bu kod, tbOutputText metin kutusuna aşağıdaki sonuçları görüntüler.

result = (47.6406099647284,-122.129339994863)

Adres elde etme (ters coğrafi kodlama)

Bu bölümde coğrafi konumu adrese dönüştürme (ters coğrafi kodlama) gösterilmektedir.

  1. MapLocationFinder sınıfının FindLocationsAtAsync yöntemini çağırın.
  2. FindLocationsAtAsync yöntemi, ile eşleşen MapLocation nesnelerinin bir koleksiyonunu içeren bir MapLocationFinderResult nesnesi döndürür.
  3. Konumları özelliğini kullanarak MapLocationFinderResult ile bir MapLocation nesneleri koleksiyonunu kullanıma sunun. Birden fazla MapLocation nesnesi olabilir çünkü sistem, verilen girişe karşılık gelen birden fazla konum bulabilir.
  4. MapLocationher Address özelliği aracılığıyla MapAddress nesneleri erişin.
using Windows.Services.Maps;
using Windows.Devices.Geolocation;
...
private async void reverseGeocodeButton_Click(object sender, RoutedEventArgs e)
{
   // The location to reverse geocode.
   BasicGeoposition location = new BasicGeoposition();
   location.Latitude = 47.643;
   location.Longitude = -122.131;
   Geopoint pointToReverseGeocode = new Geopoint(location);

   // Reverse geocode the specified geographic location.
   MapLocationFinderResult result =
         await MapLocationFinder.FindLocationsAtAsync(pointToReverseGeocode);

   // If the query returns results, display the name of the town
   // contained in the address of the first result.
   if (result.Status == MapLocationFinderStatus.Success)
   {
      tbOutputText.Text = "town = " +
            result.Locations[0].Address.Town;
   }
}

Bu kod, tbOutputText metin kutusuna aşağıdaki sonuçları görüntüler.

town = Redmond