Поделиться через


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 аргумент, состоящий из координат широты и долготы, и асинхронно возвращает коллекцию строк, представляющих адреса вблизи позиции.