Power Appsで現在地を取得し、その現在地の住所を取得する方法を紹介します。
Google Maps Geocoding API の有効化と API キー取得
今回のアプリはGoogle Cloud Platform(GCP)のGoogle Geocoding APIを利用します。
詳細は公式のドキュメントに沿ってAPIを取得してください。
Power Apps・Power Automateの実装

今回のアプリの完成イメージです。
Power Appsで現在地の緯度・経度を取得し、Power AutomateでHTTPアクションでAPIを実行し、住所を取得する方法で現在地の住所を取得します。
Power AppsでLocation関数を使うことで、現在の緯度・経度を取得できます。ボタンのOnSelectなどに設定して取得します。
コピーしました!
Set(LocatiionDataIdo,Location.Latitude);
Set(LocatiionDataKeido,Location.Longitude);
この位置情報の取得はGPSだけでなくネットワークのIPアドレス等からもデータの取得を行います。そのため、GPSがOFFの端末などでは、正しくない位置情報が取得されることもあります。
Google Geocoding APIをPower Automateで実行してデータを取得しますが、Power AutomateのHTTPアクションで使うURIの値をPower Apps側ですべて作成します。

Google Geocoding APIで緯度・経度から住所を取得するには下記のURIの形式にする必要があります。これをPower Apps側で作成し、Power Automateに渡します。
コピーしました!
https://maps.googleapis.com/maps/api/geocode/json?latlng={緯度},{経度}&key={API_KEY}
緯度・経度はSet変数でグローバル変数に格納しましたが、下ではテキストボックスの値を取得するようにしています。デバックで色んな緯度・経度で試す際に手入力できると便利でした。
コピーしました!
//Google Geocoding APIキーを入力
Set(ApiKey,"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
//Power AutomateのHTTPアクションのURIを設定
Set(apiUri, "https://maps.googleapis.com/maps/api/geocode/json?latlng="
& txt_ido1.Text & "," & txt_keido1.Text & "&key=" & ApiKey);
今回作成するフロー全体図はこちら。

Power AppsからHTTP実行用のURIを取得し、データを加工してPower Appsに返すフローです。途中でデータを加工していますが、APIで取得するデータが多すぎるため、必要そうな部分のみに削っています。
Power Appsからデータを受け取るためにPower Apps (V2)で、下記のように取得する値を設定します。今回はPower Appsで作成したURIを受け取るための値として「apiUrl」を設定します。

HTTPアクションでURIにPower Appsから取得した値を設定します。

HTTPで取得した値をJSON の解析で使えるようにします。

@{body('HTTP')?['results']}
{ "type": "array", "items": { "type": "object", "properties": { "address_components": { "type": "array", "items": { "type": "object", "properties": { "long_name": { "type": "string" }, "short_name": { "type": "string" }, "types": { "type": "array", "items": { "type": "string" } } }, "required": [ "long_name", "short_name", "types" ] } }, "formatted_address": { "type": "string" }, "geometry": { "type": "object", "properties": { "location": { "type": "object", "properties": { "lat": { "type": "number" }, "lng": { "type": "number" } } }, "location_type": { "type": "string" }, "viewport": { "type": "object", "properties": { "northeast": { "type": "object", "properties": { "lat": { "type": "number" }, "lng": { "type": "number" } } }, "southwest": { "type": "object", "properties": { "lat": { "type": "number" }, "lng": { "type": "number" } } } } } } }, "navigation_points": { "type": "array", "items": { "type": "object", "properties": { "location": { "type": "object", "properties": { "latitude": { "type": "number" }, "longitude": { "type": "number" } } } }, "required": [ "location" ] } }, "place_id": { "type": "string" }, "plus_code": { "type": "object", "properties": { "compound_code": { "type": "string" }, "global_code": { "type": "string" } } }, "types": { "type": "array", "items": { "type": "string" } } }, "required": [ "address_components", "formatted_address", "geometry", "place_id", "types" ] }
}
選択アクションで必要なデータに絞ります。

@{body('JSON_の解析')}
{ "long_name": @{item()['address_components']?[0]?['long_name']}, "short_name": @{item()['address_components']?[0]?['short_name']}, "type": @{join(item()['types'],',')}
}
選択アクションで取得したデータを文字列として変数に格納し、Power Appsへ返します。

Power Appsでフローを実行し、Jsonをテーブルに変換します。コピーしました!
//フロー実行 UpdateContext({_GoogleGeoodingApiResult:GoogleGeoodingApi.Run(apiUri).apiresponsebody}); //実行結果をテーブルへ変換 UpdateContext( { GoogleGeoodingApiResult: ForAll( Table(ParseJSON(_GoogleGeoodingApiResult)), { long_name:Text(ThisRecord.Value.long_name), short_name:Text(ThisRecord.Value.short_name), type:Text(ThisRecord.Value.type) } ) } );
取得したデータはGoogleGeoodingApiResultに格納しています。
アプリ・フローダウンロード
GitHubに公開しています。下記よりダウンロードしてご利用ください。