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.
- La classe MapLocationFinder contient des méthodes qui gèrent le géocodage (FindLocationsAsync) et le géocodage inverse (FindLocationsAtAsync).
- Ces méthodes retournent toutes deux une instance MapLocationFinderResult.
- La propriété Locations du MapLocationFinderResult expose une collection d’objets MapLocation.
- Les objets MapLocation ont à la fois une propriété Address, qui expose un objet MapAddress représentant une adresse postale et une propriété Point, qui expose un objet Geopoint représentant un emplacement géographique.
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).
- Appelez l’une des surcharges de la méthode FindLocationsAsync de la classe MapLocationFinder avec un nom de lieu ou une adresse postale.
- La méthode FindLocationsAsync retourne un objet MapLocationFinderResult.
- 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).
- Appelez la méthode FindLocationsAtAsync de la classe MapLocationFinder.
- La méthode FindLocationsAtAsync retourne un objet MapLocationFinderResult qui contient une collection d’objets MapLocation correspondants.
- 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.
- 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