ForgeにあるOutSystemsのスマートフォンアプリ対応機能OutSystems Nowを利用して、スマートフォンのネイティブ機能を試してみます。
今回は、位置情報です。スマートフォンユーザの現在位置を取得します。
Nowについてはきちんとした仕様が見つからないので、試してみた結果のみで書いている点に注意してください。
シリーズ一覧:
- OutSystemsモバイル(0) OutSystems Nowの機能はスマートフォンアプリでないと動かないみたい
- OutSystemsモバイル(1) バーコード・QRコード
- OutSystemsモバイル(2) カメラ
- OutSystemsモバイル(3) 位置情報
- OutSystemsモバイル(4) カレンダー登録
- OutSystemsモバイル(5) 連絡先登録
Table of Contents
機能
OutSystems Now内で、GetLocationというWeb Blockとして実装されています。
OutSystems Now App(スマートフォンアプリ。使っているスマートフォンのアプリストアから無料でダウンロードできます)で開いているときのみ、以下の動作をします。
- 起動直後に、位置情報を取得して、パラメータで指定したInputに自動入力する
- パラメータで指定したボタン(またはリンク)クリック時に位置情報を取得して、パラメータで指定したInputに自動入力する
取得する情報は以下6つ
- 緯度
- 経度
- 高度(m)
- 方向(角度)
- 速度(m/s)
- 取得時間
いらない情報については、Inputをパラメータに指定しないでおけば大丈夫です。
GetLocation Web BlockのJavaScriptで該当項目の値を設定する前に、パラメータで指定されているかチェックするので。
利用手順
OutSystems Nowを開発環境にインストールしていなければ、インストール。
開発するモジュールを開いて参照を追加します。Manage Dependenciesアイコンをクリック。
OutSystems NowのScreen Flows/DeviceFeatures/GetLocationにチェックを入れてOKをクリック。
これで開発するモジュールにモバイルの位置情報取得機能を組み込めるようになります。
Web Screenを1つ作り、Inputを6個、Buttonを1個、OutSystemsNow/DeviceFeatures/GetLocationを1個配置。
InputとButtonはGetLocatioンのパラメータとしてIdを渡さないといけないので、Nameを設定しておきましょう。
ButtonはGetLocationの部品内でJavaScriptでイベント処理してくれるので、どこにも行かないようにします(ここではMethodをAjax Submitにして空のScreen ActionをDestinationにしてある)。
GetLocationのプロパティ設定。
ButtonIdの下はInputのIdを設定します。いらない情報のInputは未入力にしておきます。
上から順に、緯度、経度、高度、方向、速度、時間です。
動作結果サンプル
起動直後 方向とスピードは取れていませんね
ボタンクリック後(表示が更新された)
GetLocationの内部動作
画面表示時点で、Web Blockに定義されたJavaScript関数が実行されます。
その動作は
- クリックイベントのリスナーとして位置取得関数(これも内部定義)を登録
- ボタンのクリックイベントを強制的に1回発生させる
2.の処理があるので、初期表示時点でも位置が取得される動作になっています。
関連情報
公式チュートリアル ←(2022/3/21 リンク切れにつき、リンク削除)