[UWP][MapControl] 緯度と経度から住所を求める

前回はジオコーディングについて説明しました。

今回は緯度と経度から住所を求める、逆ジオコーディングについて見ていきましょう。

※本コードを記述してみてわかりましたが、日本国内では詳しい住所は取得できないようです。

はじめにMainPage.xamlに住所を表示するためのTextBlockコントロールと、MapControlを配置します。

<StackPanel Orientation="Vertical">

    <!--<StackPanel Orientation="Horizontal">
        <TextBox x:Name="txtAddress" TextWrapping="Wrap" Text="" Width="381"/>
        <Button x:Name="btnGetLocation" Content="現在値の取得"
		    HorizontalAlignment="Left" VerticalAlignment="Stretch"
		    Width="120" Click="btnGetLocation_Click"	/>
        <TextBlock x:Name="txbPos" TextWrapping="Wrap" Text=""/>
    </StackPanel>-->
    <TextBlock x:Name="txtAddress" Width="500" HorizontalAlignment="Left" Text=""/>

    <Maps:MapControl x:Name="mapControl1" HorizontalAlignment="Left" VerticalAlignment="Top"
		Margin="0"
		Width="500"
		Height="500"    
		ZoomInteractionMode="GestureAndControl"
		TiltInteractionMode="GestureAndControl" 
		MapServiceToken="取得済みのキー" 
		MapTapped="mapControl1_MapTapped" />
</StackPanel>

MapControlのクリックされた位置の住所を求めるようにコーディングをします。

private async void mapControl1_MapTapped(MapControl sender, MapInputEventArgs args)
{
    // タップされた位置を検索
    MapLocationFinderResult result =
      await MapLocationFinder.FindLocationsAtAsync(args.Location);

    // 検索が成功したか
    if (result.Status == MapLocationFinderStatus.Success)
    {
        if (result.Locations.Count > 0)
        {
            string display =
                result.Locations[0].Address.Country +
                result.Locations[0].Address.District;

            // 住所を表
            txtAddress.Text = display;
        }
    }
}

result.Locations[0].Addressに取得した住所が入ってくるのですが、「日本」「東京」くらいまでの住所しか取得できませんでした。

逆ジオコーディングについてはあまり実用的でないかもしれません。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.