Share via


ジオコーディング

Browse sample. サンプルを参照する

この記事では、.NET Multi-platform App UI (.NET MAUI) IGeocoding インターフェイスの使用方法について説明します。 このインターフェイスは、プレースマークを位置座標にジオコーディングする API と、プレースマークに逆ジオコーディングする API を提供します。

IGeocoding インターフェイスの既定の実装は、Geocoding.Default プロパティを通じて使用できます。 IGeocoding インターフェイスと Geocoding クラスはどちらも Microsoft.Maui.Devices.Sensors 名前空間に含まれています。

作業の開始

ジオコーディング機能にアクセスするには、次のプラットフォーム固有の設定が必要です。

設定は必要ありません。

ジオコーディングの使用

次の例では、住所の位置座標を取得する方法を示します。

string address = "Microsoft Building 25 Redmond WA USA";
IEnumerable<Location> locations = await Geocoding.Default.GetLocationsAsync(address);

Location location = locations?.FirstOrDefault();

if (location != null)
    Console.WriteLine($"Latitude: {location.Latitude}, Longitude: {location.Longitude}, Altitude: {location.Altitude}");

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

リバース ジオコード化

逆ジオコーディングは、既存の座標セットに対するプレースマークを取得するプロセスです。 次の例は、プレースマークを取得する方法を示します。

private async Task<string> GetGeocodeReverseData(double latitude = 47.673988, double longitude = -122.121513)
{
    IEnumerable<Placemark> placemarks = await Geocoding.Default.GetPlacemarksAsync(latitude, longitude);

    Placemark placemark = placemarks?.FirstOrDefault();

    if (placemark != null)
    {
        return
            $"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";

    }

    return "";
}

2 つの場所間の距離を取得する

Location クラスおよび LocationExtensions クラスでは、2 つの場所の間の距離を計算するメソッドが定義されています。 2 つの位置の間の距離を取得する例については、「2 つの位置の間の距離」をご覧ください。