Eseguire la geocodifica e la geocodifica inversa
Nota
MapControl e i servizi per le mappe richiedono una chiave di autenticazione delle mappe denominata MapServiceToken. Per altre informazioni su come ottenere e impostare una chiave di autenticazione delle mappe, vedere Richiedere una chiave di autenticazione per le mappe.
Questa guida illustra come convertire indirizzi stradali in posizioni geografiche (geocodifica) e posizioni geografiche in indirizzi stradali (geocodifica inversa) chiamando i metodi della classe MapLocationFinder nello spazio dei nomi Windows.Services.Maps.
Suggerimento
Per saperne di più su come usare le mappe e la posizione nella tua app, scaricare l'esempio MapControl dal repository di esempi universali di Windows su GitHub.
Le classi coinvolte nella geocodifica e nella geocodifica inversa sono organizzate nel modo seguente.
- La classe MapLocationFinder contiene metodi che gestiscono la geocodifica (FindLocationsAsync) e la geocodifica inversa (FindLocationsAtAsync).
- Questi metodi restituiscono entrambi un'istanza mapLocationFinderResult.
- La proprietà Locations di MapLocationFinderResult espone un insieme di oggetti MapLocation.
- Gli oggetti MapLocation hanno entrambe una proprietà Address, che espone un oggetto MapAddress che rappresenta un indirizzo stradale e una proprietà Point, che espone un oggetto Geopoint che rappresenta una posizione geografica.
Importante
È necessario specificare una chiave di autenticazione delle mappe prima di poter usare i servizi mappa. Per maggiori informazioni, vedere Richiedere una chiave di autenticazione delle mappe.
Ottenere una posizione (Geocode)
Questa sezione illustra come convertire un indirizzo stradale o un nome di posizione in una posizione geografica (geocodifica).
- Chiamare uno degli overload del metodo FindLocationsAsync della classe MapLocationFinder con un nome o un indirizzo di posizione.
- Il metodo FindLocationsAsync restituisce un oggetto MapLocationFinderResult.
- Usare la proprietà Locations di MapLocationFinderResult per esporre una raccolta di oggetti MapLocation. Potrebbero essere presenti più oggetti MapLocation perché il sistema potrebbe trovare più posizioni che corrispondono all'input specificato.
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() + ")";
}
}
Questo codice visualizza i risultati seguenti nella casella di testo tbOutputText
.
result = (47.6406099647284,-122.129339994863)
Ottenere un indirizzo (codice geografico inverso)
Questa sezione illustra come convertire una posizione geografica in un indirizzo (geocodifica inversa).
- Richiamare il metodo FindLocationsAtAsync della classe MapLocationFinder.
- Il metodo FindLocationsAtAsync restituisce un oggetto MapLocationFinderResult che contiene una raccolta di oggetti MapLocation corrispondenti.
- Usare la proprietà Locations di MapLocationFinderResult per esporre una raccolta di oggetti MapLocation. Potrebbero essere presenti più oggetti MapLocation perché il sistema potrebbe trovare più posizioni che corrispondono all'input specificato.
- Accedere agli oggetti MapAddress attraverso la proprietà Indirizzo di ciascuna 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;
}
}
Questo codice visualizza i risultati seguenti nella casella di testo tbOutputText
.
town = Redmond
Argomenti correlati
- Esempio di mappa UWP
- Esempio di app UWP per la visualizzazione del traffico
- Linee guida di progettazione per le mappe
- Video: uso di mappe e posizioni tramite telefoni, tablet e PC nelle app di Windows
- Centro per sviluppatori di Bing Mappe
- Classe MapLocationFinder
- Metodo FindLocationsAsync
- Metodo FindLocationsAtAsync
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per