Migaro. 技術Tips

                       

ミガロ. 製品の技術情報
IBMiの活用に役立つ情報を掲載!


Valence 住所検索機能の利用方法

Valence6.2 20240126.1では、GoogleのAPIを使用して住所を補完できる機能が追加されました。
この機能を使用することで、住所入力に関する利便性を向上させることができます。
今回のTipsでは、郵便番号や地名に対応する住所を入力欄に補完する手順をご紹介します。

住所検索機能で必要となる設定

Google Maps Platform APIキー

Valence6.2 20240126.1ではGoogle Maps Platform APIを使用して住所を補完する機能が追加されています。
そのため、使用するにはGoogle Maps Platform APIキーが必要となります。
Google Maps Platform APIキーの取得については以下の記事をご確認ください。

Google Maps Platform APIキー取得手順と使用回数制限設定
「Google Maps Platform」の機能を利用したアプリケーションを作成するには、APIキーが必要です。Valence App BuilderのMapウィジェットでこの機能を利用する際に必要となるAPIキーの取得方法についてご紹介します。

また、住所補完は「Places API」を使用していますので、Google Maps Platform APIキーの取得時に、「Places API」を有効に設定してください。

住所検索機能の利用方法

NAB_ADRLOOKUP (住所検索)

住所検索機能はFormウィジェットで設定します。
Valence6.2 20240126.1では、データソースを作成してFormウィジェットを定義すると、Formウィジェットのフィールドに「NAB_ADDRLOOKUP」が追加されています。
NAB_ADDRLOOKUPにチェックを設定するとFormウィジェットに住所検索用の入力欄が追加されます。

住所検索フィールドに入力すると、一致する候補が表示される

次に左側メニューの「シーケンス」を選択後、住所検索の入力欄に郵便番号や地名などを入力すると一致する候補を表示してくれます。
例えば、「難波サンケイビル」を入力したとします。

住所検索の候補を選択

入力後、候補をクリックすると画面の下部にトーストが表示されて「開発者コンソールにログ記録された住所」と表示されます。
この表示を確認後、再度左側メニューの「フィールド」を選択してください。

フォーマッティングの設定

「フィールド」では、住所をマッピングするフィールドのフォーマッティング(歯車のアイコン)を選択します。

住所検索マッピング

フォーマッティングには「住所検索マッピング」というプルダウンが追加されています。
プルダウンを選択すると、先ほど入力した「難波サンケイビル」の住所データを確認することができます。

フォーマッティングでの設定

例えば、郵便番号は「postal_code」に割り当たっていますので、プルダウンから選択することで各フィールドにマッピングできます。

住所検索の結果

住所データは上記のように展開されていますので、フィールドに表示したいデータを確認しながら設定が可能です。
また、「住所検索マッピング」では複数の住所データを設定することもできます。
例えば、フィールドに「大阪市浪速区」を設定したい場合には、「locality」と「sublocality_level_1」を設定してください。
上記のようにして、取得した住所データとFormウィジェットの各フィールド(入力欄)をマッピングすることができます。

候補を日本国内のみに変更する方法

住所検索に入力して表示される候補は、Googleに登録されている世界中の場所が表示されます。
「スクリプトの実行」を使用することで候補を日本国内のみに変更することも可能です。

Formウィジェットに名前を設定

Formウィジェットに名前を設定

Formウィジェットに名前を設定してください。
例ではForm01と名前を設定しました。
名前を設定すると、スクリプト内で設定した名前を使用してFormウィジェットを取得することが可能です。

スクリプトを追加

スクリプトの実行

Formウイジェットの住所検索欄の設定をJavaScriptで変更します。
例では、Startupにスクリプトの実行を追加しています。

スクリプト例

住所検索の機能は、Place Autocompleteが使用されています。
・Place Autocomplete
https://developers.google.com/maps/documentation/javascript/places-autocomplete?hl=ja

特定の国(日本)のみに制限

getWidgetの引数にウィジェットに設定した名前 Form01を指定します。
form変数にウィジェットが格納されますので、form変数のdownメソッドを使用して住所検索の入力欄をinput変数に取得しています。AutocompleteのオブジェクトはinputコンポーネントのautoCompleteに定義されていますので、setComponentRestrictionsメソッドを使用することで結果を特定の国に制限することができます。
 ※日本のみの場合は jp を指定します。

const form = getWidget('Form01');
const input = form.down('[name=NAB_ADDRLOOKUP]');
input.autoComplete.setComponentRestrictions({
  country: ["jp"]
});

住所検索実行例