Effectuer un géocodage et un géocodage inverse

Important

Mise hors service Bing Maps for Enterprise

Les services MapControl et MapControl UWP de l’espace de noms Windows.Services.Maps s’appuient sur Bing Maps. Bing Maps for Enterprise est déconseillé et sera mis hors service, auquel cas mapControl et les services ne recevront plus de données.

Pour plus d’informations, consultez le Centre de développement Bing Maps et la documentation Bing Maps.

Remarque

MapControl et les services de carte nécessitent une clé d’authentification de cartes appelée MapServiceToken. Pour plus d’informations sur l’obtention et la définition d’une clé d’authentification de cartes, voir Demander une clé d’authentification de cartes.

Ce guide vous montre comment convertir des adresses postales en emplacements géographiques (géocodage) et convertir des emplacements géographiques en adresses postales (géocodage inverse) en appelant les méthodes de la classe MapLocationFinder dans l’espace de noms Windows.Services.Maps.

Les classes impliquées dans le géocodage et le géocodage inverse sont organisées comme suit.

Important

 Vous devez spécifier une clé d’authentification de mappage avant de pouvoir utiliser les services de carte. Pour plus d’informations, consultez Demander une clé d’authentification mappée.

Obtenir un emplacement (Géocode)

Cette section montre comment convertir une adresse postale ou un nom de lieu en emplacement géographique (géocodage).

  1. Appelez l’une des surcharges de la méthode FindLocationsAsync de la classe MapLocationFinder avec un nom de lieu ou une adresse postale.
  2. La méthode FindLocationsAsync retourne un objet MapLocationFinderResult.
  3. Utilisez la propriété Locations de MapLocationFinderResult pour exposer une collection d’objets MapLocation. Il peut y avoir plusieurs objets MapLocation , car le système peut trouver plusieurs emplacements correspondant à l’entrée donnée.
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() + ")";
   }
}

Ce code affiche les résultats suivants dans la tbOutputText zone de texte.

result = (47.6406099647284,-122.129339994863)

Obtenir une adresse (géocode inverse)

Cette section montre comment convertir un emplacement géographique en adresse (géocodage inverse).

  1. Appelez la méthode FindLocationsAtAsync de la classe MapLocationFinder.
  2. La méthode FindLocationsAtAsync retourne un objet MapLocationFinderResult qui contient une collection d’objets MapLocation correspondants.
  3. Utilisez la propriété Locations de MapLocationFinderResult pour exposer une collection d’objets MapLocation. Il peut y avoir plusieurs objets MapLocation , car le système peut trouver plusieurs emplacements correspondant à l’entrée donnée.
  4. Accédez aux objets MapAddress via la propriété Address de chaque MapLocation.
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;
   }
}

Ce code affiche les résultats suivants dans la tbOutputText zone de texte.

town = Redmond