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