Выполнение геокодирования и обратного геокодирования
Внимание
Bing Maps для выхода на пенсию службы Enterprise
Службы MapControl UWP и карты из пространства имен Windows.Services.Maps используют карты Bing. Карты Bing для предприятия устарели и будут прекращены, в то время как mapControl и службы больше не будут получать данные.
Дополнительные сведения см. в документации по Центру разработчиков карт Bing и картам Bing.
Примечание.
Для служб MapControl и служб карт требуется ключ проверки подлинности карт с именем MapServiceToken. Дополнительные сведения о получении и настройке ключа проверки подлинности карт см. в разделе "Запрос ключа проверки подлинности карт".
В этом руководстве показано, как преобразовать уличные адреса в географические расположения (геокодирование) и преобразовать географические расположения в адреса улиц (обратное геокодирование) путем вызова методов класса MapLocationFinder в пространстве имен Windows.Services.Maps.
Классы, участвующие в геокодинге и обратном геокодирование, организованы следующим образом.
- Класс MapLocationFinder содержит методы, обрабатывающие геокодирование (FindLocationsAsync) и обратное геокодирование (FindLocationsAtAsync).
- Эти методы возвращают экземпляр MapLocationFinderResult.
- Свойство Locations объекта MapLocationFinderResult предоставляет коллекцию объектов MapLocation.
- Объекты MapLocation имеют свойство Address, которое предоставляет объект MapAddress, представляющий адрес улицы, и свойство Point, которое предоставляет объект Geopoint, представляющий географическое расположение.
Внимание
Прежде чем использовать службы карт, необходимо указать ключ проверки подлинности карт. Дополнительные сведения см. в разделе "Запрос ключа проверки подлинности карт".
Получение расположения (геокод)
В этом разделе показано, как преобразовать адрес улицы или имя места в географическое расположение (геокодирование).
- Вызовите одну из перегрузок метода FindLocationsAsync класса MapLocationFinder с именем места или адресом улицы.
- Метод FindLocationsAsync возвращает объект MapLocationFinderResult.
- Используйте свойство Locations объекта MapLocationFinderResult для предоставления объектов MapLocation коллекции. Может быть несколько объектов MapLocation, так как система может найти несколько расположений, соответствующих заданным входным данным.
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() + ")";
}
}
Этот код отображает следующие результаты в текстовом tbOutputText
поле.
result = (47.6406099647284,-122.129339994863)
Получение адреса (обратный геокод)
В этом разделе показано, как преобразовать географическое расположение в адрес (обратная геокодирование).
- Вызовите метод FindLocationsAtAsync класса MapLocationFinder.
- Метод FindLocationsAtAsync возвращает объект MapLocationFinderResult, содержащий коллекцию соответствующих объектов MapLocation.
- Используйте свойство Locations объекта MapLocationFinderResult для предоставления объектов MapLocation коллекции. Может быть несколько объектов MapLocation, так как система может найти несколько расположений, соответствующих заданным входным данным.
- Доступ к объектам MapAddress через свойство Address каждого 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;
}
}
Этот код отображает следующие результаты в текстовом tbOutputText
поле.
town = Redmond