2024/07/26

作ってみよう:#7)お小遣い帳 - 現在位置から近隣の情報を取得 ②

前回は GPS から現在位置を取得する作業を行いました。今回はその座標を使って近隣の情報を GoogleMAP から取得します。

 

ライブラリの準備

GoogleMAP から情報を取得するプログラムは、別の連載『クラス化に挑戦』の第 6 回 ~ 第 13 回で作成した lsGoogleMAP スクリプトライブラリです。このライブラリを「お小遣い帳」DB にコピペします。

※ この記事を書いていて『#7)Google マップ - Place API の結果をクラス化 ②』 のプログラム内にバグを見つけました(リンク先の記事は修正済みです)。ご注意ください。


エージェントの作成

現在位置から近隣を検索する機能を作成します。他のフォームからの利用を考えてエージェントとして作成します。名称は「NearBySearch_Google」、「エージェントリストの選択」で対象は「なし」を指定します。

続いて、ライブラリを組み込み GoogleMAP に接続する準備をします。


最寄りの場所情報の取得

まずはライブラリ組み込みの確認を行います。とりあえず、現在位置から一番近い場所情報を GoogleMAP から取得します。これがうまく動作すれば組み込み成功ということですね。

Sub Initialize
   Dim nuiw As New NotesUIWorkspace
   Dim nuid As NotesUIDocument
   Dim nd As NotesDocument
   Dim oLoc As Location
   Dim oSch As NearBySearch
   Dim oPlace As Place

   Set nuid = nuiw.CurrentDocument
   Set nd = nuid.Document

   Set oLoc = New Location(nd.Sch_Latitude(0), nd.Sch_Longitude(0))
   Set oSch = New NearBySearch(oLoc)

   Call oSch.Search()

    MsgBox CStr(oSch.Count) & "件、見つかりました。"
   If oSch.Count > 0 Then
      Set oPlace = oSch.GetPlace_Nth(1)
      nd.Vendor = oPlace.PlaceName
   End If
End Sub

現在の文書から現在位置を読み込み座標(Location インスタンス)を作成します。その座標をもとに NearBySearch を行い、一番近い場所の名称を Vendor フィールドにセットしています。


検索ボタンの作成

エージェントができたらフォームに検索を実行するボタン[近隣]を作成します。シンプルアクションで今回作成したエージェントを実行するだけの設定です。


なお、このボタンは、編集モードの場合だけ表示するようにしておくとよいでしょう。


フォームを保存したらテストします。正しく動作すると、最も近隣の情報が表示されます。


次回の予告

最寄りの情報一つでは必要な情報が得られないですね。次回は、検索結果の中から選択する機能を作成します。


Notes クライアントでテストする場合

テストするたびに Nomad を使用して GPS 座標の取得が手間な場合は、座標のフィールドに初期値をセットするようしてください。前回作成した GPS の現在位置取得はフィールドが空の場合のみ実行しますので、初期値を与えると停止します。


前回 作ってみよう 次回


0 件のコメント:

コメントを投稿