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

Geocoding クラスでは、placemark を位置座標にジオコーディングするための API と、逆に座標を placemark にジオコーディングする API が提供されています。The Geocoding class provides APIs to geocode a placemark to a positional coordinates and reverse geocode coordinates to a placemark.

作業開始Get started

この API の使用を始めるには、Xamarin.Essentials の概要ガイドを読み、ライブラリが正しくインストールされてプロジェクトに設定されていることを確認してください。To start using this API, read the getting started guide for Xamarin.Essentials to ensure the library is properly installed and set up in your projects.

Geocoding の機能にアクセスするには、次のプラットフォーム固有の設定が必要です。To access the Geocoding functionality the following platform specific setup is required.

追加の設定は必要ありません。No additional setup required.

Geocoding の使用Using Geocoding

自分のクラスの Xamarin.Essentials に参照を追加します。Add a reference to Xamarin.Essentials in your class:

using Xamarin.Essentials;

住所の場所の座標の収録:Getting location coordinates for an address:

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
}

高度は常に使用できるとは限りません。The altitude isn't always available. 使用できない場合、Altitude プロパティは null または 0 になることがあります。If it is not available, the Altitude property might be null or the value might be zero. 高度を使用できる場合、値は海抜メートル単位です。If the altitude is available, the value is in meters above sea level.

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

逆ジオコーディングは、既存の座標セットに対する placemarks を取得するプロセスです。Reverse geocoding is the process of getting placemarks for an existing set of coordinates:

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 つの場所の間の距離Distance between Two Locations

Location クラスおよび LocationExtensions クラスでは、2 つの場所の間の距離を計算するメソッドが定義されています。The Location and LocationExtensions classes define methods to calculate the distance between two locations. 例については、Xamarin.Essentials:位置情報に関する記事をご覧ください。See the article Xamarin.Essentials: Geolocation for an example.

APIAPI

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