地図情報をGPSから取得(Location関数)「作業報告アプリ改良」

Microsoft Power Platform
  1. Location関数を使い地図情報をGPSから取得して地図を表示しよう!
    1. 緯度・経度は以下の関数で取得できます。
    2. SharePointListに緯度(Latitude)・経度(Longitude)・場所(Place)を追加します。
    3. PowerApps編集画面
      1. 新規スクリーン(PlaceScreen)の追加
        1. 「+新しい画面」⇒「空」のレイアウト
        2. 「画面」名を「PlaceScreen」に変更します。
        3. 「挿入」⇒「編集フォーム」と選択します。
        4. 「データソース」⇒「WorkCompletionReport」を選択します。
        5. 「フィールド」の各項目が表示されます。
        6. 「フィールドの編集」をクリックします。
        7. 不要な「フィールド」を削除後、「Latitude」「Longitude」「Place」のみにします。
        8. 「DataCardValueXX」選択⇒「詳細設定」⇒「プロパティを変更するためにロックを解除します。」をクリック。
        9. Default = Parent.Default ⇒ 「Location.Latitude」と設定しますが、 今回はIf構文で設定します。
      2. DataCardValue26 , DataCardValue27 , DataCardValue28 の各々のDisplayModeを「DisplayMode.View」に変更しておきます。
      3. 「Form」のプロパティ⇒「規定モード」⇒「編集」の場合「表示するアイテムがありません」となりますので「新規」に変更します。
    4. Bing Maps 地図サービスを利用する。
      1. Bing Maps APIキー取得
        1. マイクロソフトアカウントでサインイン後、「My account」の「My Keys」をメモします。
      2. 「データの追加」⇒検索欄に「bing maps」と入力し⇒「Bing Maps」を選択します。
      3. 「+接続の追加」を選択します。
      4. メモしてあったAPIキーを入力し「接続」を選択します。
      5. 「挿入」⇒「メディア」⇒「画像」と選択します。
      6. Image4のImageプロパティに以下の値を設定します。
      7. DetailScreen1に「地図表示」ボタンを配置して、「Navigate関数」で「PlaceScreen」に画面遷移出来るようにします。
        1. 「挿入」⇒「ボタン」
        2. 「ボタン」の「Text」プロパティに「地図表示」と入力します。
      8. PlaceScreenに「戻る」ボタンを配置して、「Back関数」で「前画面」に画面遷移出来るようにします。
    5. 関連

Location関数を使い地図情報をGPSから取得して地図を表示しよう!

既に作成した「作業報告」アプリに、新しい画面「PlaceScreen」を追加して、位置情報を取得します。

まず、基本 位置情報は以下の関数(Location関数)で簡単に取得できます。

緯度・経度は以下の関数で取得できます。

  • 緯度:Location.Latitude
  • 経度:Location.Longitude

Location関数を、テキストラベルのTextプロパティに設定すると、緯度・経度を表示できます。

  • 緯度: Text = Location.latitude
  • 経度: Text = Location.longitude

では、「作業報告」アプリの SharePointList 追加修正します。

SharePointListに緯度(Latitude)・経度(Longitude)・場所(Place)を追加します。

列名

種類

Latitude 一行テキスト
Longitude 一行テキスト
Place 一行テキスト

Power Apps に移動します。

PowerApps編集画面

新規スクリーン(PlaceScreen)の追加

「+新しい画面」⇒「空」のレイアウト

「ツリービュー」の「+新しい画面」から「空」の画面を追加します。

「画面」名を「PlaceScreen」に変更します。

「挿入」⇒「編集フォーム」と選択します。

まずは、「PlaceScreen」に 「編集フォーム」を「挿入」します。

「挿入」⇒「編集フォーム」と順番に選択します。

「データソース」⇒「WorkCompletionReport」を選択します。

挿入された「編集フォーム」とSharePoint のデータソース「WorkCompletionReport」を接続します。

「編集フォーム」を選択後、右側のフォームの「プロパティ」にある「データソース」が「なし」になっているので、右側の下矢印をクリックして SharePoint の WorkCompletionReport を選択します。

「フィールド」の各項目が表示されます。

「データソース」に「「WorkCompletionReport」が表示されると、左側の「編集フォーム」にフィールドの各項目が表示されます。

「フィールドの編集」をクリックします。

今回不必要な項目を削除します。

不要な「フィールド」を削除後、「Latitude」「Longitude」「Place」のみにします。

  • 緯度:latitude
  • 経度:longitude
  • 場所:Place

3つのみの表示になります。

「DataCardValueXX」選択⇒「詳細設定」⇒「プロパティを変更するためにロックを解除します。」をクリック。

「DataCardValueXX」の Default プロパティ が「Parent.Default」となっているのを、「Location.Latitude」と「Location.longitude」に変更したいのですが、ロックを解除しなければなりません。

「詳細設定」の「プロパティを変更するためにロックを解除します」をクリックします。

Default = Parent.Default ⇒ 「Location.Latitude」と設定しますが、 今回はIf構文で設定します。

位置情報取得は、最初のみにして更新されないようにするために、if構文を利用します。

if構文は以下の様に書きます。

  • 緯度(Latitude)
    • 「If(IsBlank(Parent.Default)=true,Location.Latitude,Parent.Default)」
説明
リストから取得した値が空白または新規の場
GPSからの緯度値をセット
リストから取得した値をセット、新規の場合は空白
  • 経度:Longitude
    • 「If(IsBlank(Parent.Default)=true,Location.Longitude,Parent.Default)」
説明
リストから取得した値が空白または新規の場合
GPSからの経度値をセット
リストから取得した値をセット、新規の場合は空白

DataCardValue26 , DataCardValue27 , DataCardValue28 の各々のDisplayModeを「DisplayMode.View」に変更しておきます。

「緯度・経度・場所」情報は、変更不可にするために、「DisplayMode」を「編集」モードから⇒「ビュー」モードに変更します。

displayMode = DisplayMode.Xiew

この操作を、各々「Latitude_DataCardXX」「Longitude_DataCardXX」「Place_DataCardXX」に行います。

変更不可になります。

この段階で、「アプリのプレビュー」ボタンを押します。

すると、「表示するアイテムがありません」となります。

「Form」のプロパティ⇒「規定モード」⇒「編集」の場合「表示するアイテムがありません」となりますので「新規」に変更します。

「規定モード」を「新規」に変更します。

表示されます。

さらに、地図情報を表示するために「Bing Maps」地図サービスを追加します。

Bing Maps 地図サービスを利用する。

Bing Maps 地図サービスを利用するためには、APIキーを取得する必要があります。

Bing Maps APIキー取得

Bing Maps Dev Center へ行きます。

マイクロソフトアカウントでサインイン後、「My account」の「My Keys」をメモします。

マイクロソフトアカウント「Microsoft Account」 でサインイン「Sign in」します。

マイアカウント「My account」⇒「My Keys」と選択します。

「key:Show key」をクリックすると、「key」が表示されます。

大切なので、メモ帳などにコピーします。

「データの追加」⇒検索欄に「bing maps」と入力し⇒「Bing Maps」を選択します。

「+接続の追加」を選択します。

メモしてあったAPIキーを入力し「接続」を選択します。

 

「挿入」⇒「メディア」⇒「画像」と選択します。

Image4のImageプロパティに以下の値を設定します。

まず以下の様に記入すると、補完が表示されます。

imagerySetが地図の種類で、以下ズームレベル、緯度、経度、pinタイプと続きます。

今回はこんな感じです。緯度・経度は「EditScreen」の「DataCardValue10」と「DataCardValue11」を指定します。

さらに、地図サイズ、プッシュピンの位置、ピン止めの形を「Concatenate関数」で文字列連結します。

 

詳しくは以下を参照してください。

Microsoft Learn 参照

 

実際にはこんな感じになります。

うまくいくと、地図が表示されます。

DetailScreen1に「地図表示」ボタンを配置して、「Navigate関数」で「PlaceScreen」に画面遷移出来るようにします。

「挿入」⇒「ボタン」

「ボタン」の「Text」プロパティに「地図表示」と入力します。

「ボタン」の「OnSelect」プロパティに「Navigate(PlaceScreen)」と入力します。

PlaceScreenに「戻る」ボタンを配置して、「Back関数」で「前画面」に画面遷移出来るようにします。

「DetailScreen」の「RectQuickActionBar」と「IconBackarrow」と「LblAppName」3つを Ctrlキーで選択しコピーします。

「PlaceScreen」に貼り付けます。

「LblAppName」のテキストを「戻る」に変更し、「Width」プロパティを「100」に変更します。

「IconBackarrow」の「OnSelect」プロパティに「Back()」と入力します。

コメント