こんにちは。今回はアプリで現在地を取得し、移動したルートを取得する方法をご説明します。
こちらではマップコントロールを使います。
環境の設定
まず、マップコントロールでルーティング(地点と地点をつなぐ表示)をする場合は環境の地理空間機能を有効にする必要があります。
環境の地理空間機能を有効にする設定はこちらを参考にして下さい。
アプリ側での設定
記録開始ボタンを押してから記録終了ボタンを押すまでの間で2秒ごとに現在地を取得し、ルートを表示するように作っていきます。
まずボタンの設定をしていきます。
ボタンコントロールの設定
2つボタンを作成します。
記録開始ボタンの「Onstart」プロパティに以下の関数を設定します。ボタンを押したときにコンテキスト変数「recordstart」を「true」に設定し、この「recordstart」を基準にして、現在地取得をしていきます。
UpdateContext({
recordstart:true
})
記録終了ボタンボタンの「Onstart」プロパティに以下の関数を設定します。コンテキスト変数「recordstart」を「false」に設定します。
UpdateContext({recordstart:false})
タイマーコントロールの設定
次に時間ごとに現在地取得の処理を行うためにタイマーコントロールを設定していきます。
処理を繰り返すためにタイマーコントロールの「Repeat」プロパティに「true」を入れます。
true
2秒ごとに処理を行いたい為、タイマーコントロールの「Duration」プロパティに「2000」を入力します。
2000
「recordstart」が「true」の間に設定した時間(2秒)が過ぎたら、現在地の情報を取得し、コレクションMyCol2にデータをためます。
タイマーコントロールの「OnTimeEnd」プロパティに以下の関数を入れます。
If(recordstart,Collect(MyCol2,{緯度:Location.Latitude, 経度:Location.Longitude}))
タイマーコントロールの「Start」プロパティに変数の「recordstart」を入れます。
「recordstart」が「true」になったらスタートします。
画面が表示されるタイミングでは「recordstart」を「false」にしたいのでScreenの「Onvisible」プロパティに以下の関数を設定します。
UpdateContext({
recordstart:false
})
マップコントロールの設定
マップコントロールの「RouteWaypoints_Items」にコレクションMyCol2を入力します。
MyCol2
RouteWaypointsLatitudesに「"緯度"」を入力します。
"緯度"
RouteWaypointsLongitudes「"経度"」を入力します。
"経度"
コレクションにためたルート情報を削除
コレクションにためたルート情報を削除するためのリセットボタンを作成します。
Clear(MyCol2);
データを確認するためのギャラリー
コレクションのデータを確認するためのギャラリーを設定します。
データソースに「MyCol2」を設定し、フィールドの設定をします。
スマホで動作確認
スマホで開いて、動きを確認します。

記録開始ボタンを押してから記録終了ボタンを押すまでのルートを取得できました!
