Sdílet prostřednictvím


Xamarin.Forms Geokódování map

Obor Xamarin.Forms.Maps názvů poskytuje Geocoder třídu, která převádí mezi řetězcovými adresami a souřadnicemi zeměpisné šířky a délky, které jsou uloženy v Position objektech. Další informace o struktuře Position naleznete v tématu Umístění a vzdálenost mapy.

Poznámka:

Alternativní rozhraní API pro geokódování je k dispozici v Xamarin.Essentialssystému . Rozhraní Xamarin.EssentialsGeocoding API nabízí strukturovaná data adres při geokódování adres na rozdíl od řetězců vrácených tímto rozhraním API. Další informace naleznete v tématu Xamarin.Essentials: Geokódování.

Geografické kódování adresy

Adresu ulice lze geokódovat do souřadnic zeměpisné šířky a délky vytvořením Geocoder instance a voláním GetPositionsForAddressAsync metody v Geocoder instanci:

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}";

Metoda GetPositionsForAddressAsync přebírá string argument, který představuje adresu, asynchronně vrátí kolekci Position objektů, které by mohly představovat adresu.

Zpětné geografické kódování adresy

Souřadnice zeměpisné šířky a délky můžou být zpětně zakódovány na ulici vytvořením Geocoder instance a voláním GetAddressesForPositionAsync metody v Geocoder instanci:

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();

Metoda GetAddressesForPositionAsync přebírá Position argument složený ze souřadnic zeměpisné šířky a délky a asynchronně vrátí kolekci řetězců, které představují adresy blízko pozice.