Xamarin.Forms Сопоставление геокодирования
Пространство Xamarin.Forms.Maps
имен предоставляет Geocoder
класс, который преобразует между строковыми адресами и координатами широты и долготы, хранящимися в Position
объектах. Дополнительные сведения о структуре см. в Position
разделе "Положение карты" и "Расстояние".
Примечание.
Альтернативный API геокодирования доступен в Xamarin.Essentials. Xamarin.EssentialsGeocoding
API предлагает структурированные данные адресов при геокодирования адресов, а не строки, возвращаемые этим API. Дополнительные сведения см. в разделе Xamarin.Essentials:Геокодирование.
Географический код адреса
Адрес улицы можно закодировать в координатах широты и долготы, создав Geocoder
экземпляр и вызвав GetPositionsForAddressAsync
метод в экземпляре Geocoder
:
using Xamarin.Forms.Maps;
// ...
Geocoder geoCoder = new Geocoder();
IEnumerable<Position> approximateLocations = await geoCoder.GetPositionsForAddressAsync("Pacific Ave, San Francisco, California");
Position position = approximateLocations.FirstOrDefault();
string coordinates = $"{position.Latitude}, {position.Longitude}";
Метод GetPositionsForAddressAsync
принимает string
аргумент, представляющий адрес, и асинхронно возвращает коллекцию Position
объектов, которые могут представлять адрес.
Обратный геокод для адреса
Координаты широты и долготы можно изменить в адрес улицы, создав Geocoder
экземпляр и вызвав GetAddressesForPositionAsync
метод в экземпляре Geocoder
:
using Xamarin.Forms.Maps;
// ...
Geocoder geoCoder = new Geocoder();
Position position = new Position(37.8044866, -122.4324132);
IEnumerable<string> possibleAddresses = await geoCoder.GetAddressesForPositionAsync(position);
string address = possibleAddresses.FirstOrDefault();
Метод GetAddressesForPositionAsync
принимает Position
аргумент, состоящий из координат широты и долготы, и асинхронно возвращает коллекцию строк, представляющих адреса вблизи позиции.