毎日多くの郵便物を配達する郵便局員は、現在位置に基づいて、近くの配達先を知る必要があります。
この目的のために、郵便局のすべての要件を格納するトランザクションを作成します。さらに、スマート デバイス アプリケーションで、地図上に配達先 (SDMaps コントロールを使用) および現在位置 (GeoLocation 外部オブジェクトの GetMyLocation メソッドを使用) を表示します。
次に、この実装に必要な 4 つの手順について詳しく説明します。4 つの手順を詳細に確認して、この実装を実行してください。
最初に、郵便局のすべての要件を格納するために使用されるトランザクションを作成します。
POReqId * // Autonumber
POREqAddress // Char(500): 住所または説明
POReqLoc // Geolocation: 緯度、経度
POReqDeliver // boolean
PoReqPin // Image: アイコン画像
Work With for Smart Devices パターンを適用して (WorkWithDevicesPostOffice が作成される)、次を設定します:
- List/Grid/Control Type = SD MAPS
- List/Grid/Location Attribute = POReqLoc
- List/Grid/Pin Image Attribute = POReqPin
Menu for Smart Devices オブジェクトを作成して、WorkWithDevicesPostOffice アイテムを追加します。(詳しくは、「Work With for Smart Devices パターンの適用」を参照してください。)
WorkWithDevicesPostOffice の List オブジェクトに "GetMyLoc" アクションを作成して、GetMyLocation メソッドを呼び出します。
アクションを作成するには、 [ リスト ] ノードをクリックして [ イベント ] に移動し、"追加" アクションボタン (GetMyLoc) を選択します。GetMyLocation メソッドを呼び出すには、 [ イベント ] に移動して、次のコードを記述します:
Event 'GetMyloc'
&GetMyLocation = Geolocation.GetMyLocation(0,0,false)
EndEvent
// ここで:
// &GetMyLocation は GeoLocationInfo データタイプに基づいており、
// Geolocation は変数ではなく、外部オブジェクトの静的な参照です。
注: GetMyLocation メソッドは、デバイス側で実行されるので、アクションから呼び出す必要があります。プロシージャーから呼び出すことはできません。
ネストされたアクションを作成し、ここから、データベースに “自分の位置” を格納するプロシージャーを呼び出します (ネストされたアクションを同時にトリガーするために、Composite コマンド節を使用する必要があります)。このアクションは、上述の GetMyLocation メソッドを呼び出した結果である、GeoLocationInfo パラメーターを設定します。サンプルコードは次のようになります:
Event 'GetMyloc'
Composite
&GetMyLocation = Geolocation.GetMyLocation(0,0,false)
StoreMyLocation(&GetMyLocation)
EndComposite
EndEvent
StoreMyLocation プロシージャーのサンプルコードは次のようになります:
parm(&GetMyLocation); //重要: パラメーターの名前は、呼び出されるメソッドと同じである必要があります。
new
POReqAddress = 'ここにいます'
POReqLoc = &GetMyLocation.Location
POReqDeliver = false
PoReqPin.FromImage(here)
endnew
データをリフレッシュするためのネストされたアクションを作成します。記述するコードは、次のようになります: SD Actions.Refresh()
最終的に、次のようになります:
これらの例の完全なナレッジベースは、Postman から利用できます。
Geolocation - 付近を表示
Geolocation - 現在地を表示
Geolocation 外部オブジェクト
|