Xamarin.Essentials:ジオコーディング

Geocoding クラスでは、placemark を位置座標にジオコーディングするための API と、逆に座標を placemark にジオコーディングする API が提供されています。

作業開始

この API の使用を始めるには、Xamarin.Essentials の概要ガイドを読み、ライブラリが正しくインストールされてプロジェクトに設定されていることを確認してください。

Geocoding の機能にアクセスするには、次のプラットフォーム固有の設定が必要です。

追加の設定は必要ありません。

Geocoding の使用

クラスの Xamarin.Essentials への参照を追加します。

using Xamarin.Essentials;

住所の場所の座標の取得:

try
{
    var address =  "Microsoft Building 25 Redmond WA USA";
    var locations = await Geocoding.GetLocationsAsync(address);

    var location = locations?.FirstOrDefault();
    if (location != null)
    {
        Console.WriteLine($"Latitude: {location.Latitude}, Longitude: {location.Longitude}, Altitude: {location.Altitude}");
    }
}
catch (FeatureNotSupportedException fnsEx)
{
    // Feature not supported on device
}
catch (Exception ex)
{
    // Handle exception that may have occurred in geocoding
}

高度は常に使用できるとは限りません。 使用できない場合、Altitude プロパティは null または 0 になることがあります。 高度を使用できる場合、値は海抜メートル単位です。

逆ジオコーディングの使用

逆ジオコーディングは、既存の座標セットに対する placemarks を取得するプロセスです。

try
{
    var lat = 47.673988;
    var lon = -122.121513;

    var placemarks = await Geocoding.GetPlacemarksAsync(lat, lon);

    var placemark = placemarks?.FirstOrDefault();
    if (placemark != null)
    {
        var geocodeAddress =
            $"AdminArea:       {placemark.AdminArea}\n" +
            $"CountryCode:     {placemark.CountryCode}\n" +
            $"CountryName:     {placemark.CountryName}\n" +
            $"FeatureName:     {placemark.FeatureName}\n" +
            $"Locality:        {placemark.Locality}\n" +
            $"PostalCode:      {placemark.PostalCode}\n" +
            $"SubAdminArea:    {placemark.SubAdminArea}\n" +
            $"SubLocality:     {placemark.SubLocality}\n" +
            $"SubThoroughfare: {placemark.SubThoroughfare}\n" +
            $"Thoroughfare:    {placemark.Thoroughfare}\n";

        Console.WriteLine(geocodeAddress);
    }
}
catch (FeatureNotSupportedException fnsEx)
{
    // Feature not supported on device
}
catch (Exception ex)
{
    // Handle exception that may have occurred in geocoding
}

2 つの場所の間の距離

Location クラスおよび LocationExtensions クラスでは、2 つの場所の間の距離を計算するメソッドが定義されています。 例については、Xamarin.Essentials: 位置情報に関する記事をご覧ください。

API

他の Xamarin ビデオは、Channel 9 および YouTube でご覧いただけます。