Выполнение геокодирования и обратного геокодирования
Примечание
MapControl и службы карт требуют ключ проверки подлинности Maps, который называется MapServiceToken. Дополнительные сведения о получении и установке ключа проверки подлинности карт см. в статье Запрос ключа проверки подлинности карт.
В этом руководстве показано, как преобразовать адреса улиц в географические расположения (геокодирование) и преобразовать географические расположения в адреса улиц (обратное геокодирование) путем вызова методов класса MapLocationFinder в пространстве имен Windows.Services.Maps .
Совет
Чтобы узнать больше об использовании карт в приложении, скачайте пример MapControl из репозитория универсальных примеров Windows на сайте GitHub.
Классы, участвующие в геокодирования и обратном геокодирования, организованы следующим образом.
- Класс 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
Связанные темы
- Пример карты UWP
- Пример приложения UWP для работы с трафиком
- Руководство по разработке карт
- Видео: использование карт и расположения на телефоне, планшете и компьютере в приложениях для Windows
- Bing Maps Developer Center
- Класс MapLocationFinder
- Метод FindLocationsAsync
- Метод FindLocationsAtAsync
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по