Xamarin.Forms マップのジオコーディング

Xamarin.Forms.Maps 名前空間は、Geocoder クラスを提供します。このクラスは、文字列の住所と、Position オブジェクトに格納されている緯度および経度の座標の間で変換を実行します。 Position 構造体の詳細については、「 マップの位置と距離」を参照してください。

Note

Xamarin.Essentials では、代替のジオコーディング API を使用できます。 Xamarin.EssentialsGeocoding API は、住所をジオコーディングするときに、この API で返される文字列ではなく、構造化された住所データを提供します。 詳細については、「Xamarin.Essentials: ジオコーディング」を参照してください。

住所をジオコーディングする

番地を緯度と経度の座標にジオコーディングするには、Geocoder インスタンスを作成し、Geocoder インスタンスで GetPositionsForAddressAsync メソッドを呼び出します。

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 インスタンスを作成し、Geocoder インスタンスで GetAddressesForPositionAsync メソッドを呼び出します。

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 引数を受け取り、位置に近い住所を表す文字列のコレクションを非同期で返します。