PowerCMS™
2025年1月1日購入分よりライセンスの価格を改定いたします。
[ブログ] PowerCMS 6 でのアップデートまとめ を追加しました。
[よくあるご質問] システムログに「タスクを実行するために必要なロックを獲得できませんでした」というログが残っている を追加しました。
[よくあるご質問] 特定のシステムログに絞って確認できますか? を追加しました。

PowerCMS ブログ

ホーム > PowerCMS ブログ > PowerCMS 4 > プログラミング不要、CustomObject(カスタム項目)で位置情報(Geocoding)APIを…

2016年09月12日

プログラミング不要、CustomObject(カスタム項目)で位置情報(Geocoding)APIを実装する

住所文字列から位置情報を取得するには Google Maps Geocoding API を使うのが一般的かと思います。

ある案件で用途が利用制限(Google Maps Geocoding API Usage Limits)に引っかかるなどの理由で別の方法を検討しなければならないケースがありました。

エリアが絞られている、あいまいな文字列への対応などを行わなくて良いケース(ユーザーの入力ではなく、予め用意されたカスタムフィールドの値などで検索するといったケース)では、PowerCMS の CustomObject を利用することで Geocoding APIを PowerCMS の DataAPIとして実装することができます。プログラミングは一切不要です。

カスタム項目のラベルを「位置情報」にカスタマイズする

この例では「標準カスタム項目」を利用します。「標準カスタム項目」とは、システムメニュー→ツール→カスタム項目画面で独自に定義するカスタム項目ではなく、PowerCMSの初期インストール段階で既に有効になっているカスタム項目を指します。「標準カスタム項目」はウェブサイト/ブログごとにラベルをカスタマイズすることができます。各ウェブサイトに設定がない場合はシステムのプラグイン設定で設定したラベルが使われます。ブログに設定がない場合は、ウェブサイト、ウェブサイトに設定がない場合はシステムのプラグイン設定で設定したラベルが使われます(常に上位オブジェクトのラベルが継承される※)。

カスタムオブジェクトのラベルをカスタマイズした状態のメニュー表記

※この機能を理解しておくと、例えば「スポーツニュース」ウェブサイトにおいて、野球ウェブサイト(ブログ)では「チーム」サッカーウェブサイト(ブログ)では「クラブ」というように、ラベルを複数使い分けることができます。

プラグイン設定でのラベルのカスタマイズ

今回は、英語名(英)、項目名複数形(英)を「Location Info」、項目名(日)を「位置情報」とします。

カスタム項目にカスタムフィールドを作成する

システムオブジェクト「カスタム項目」にカスタムフィールドを作成します

システムオブジェクト種類名前タグ名ベースネーム
カスタム項目テキスト緯度LocationLatitudelocation_latitude
カスタム項目テキスト経度LocationLongitudelocation_longitude

カスタムフィールドを大量に作成するケースでは、CSVからインポートする機能を利用すると便利です。以下、この例のサンプルファイルです。

今回、位置情報は国土地理院の位置参照情報ダウンロードサービスを利用します。以下のサイトから必要なCSVをダウンロードして、カスタム項目のインポート形式に修正、整形します。

整形後のCSVファイル

以下、実際のファイルです。

インポート後の一覧画面

DataAPIでカスタムオブジェクトを検索する

位置情報の検索にはDataAPIを使います。以下のようにGETリクエストを送ります。

https://localhost/mt/mt-data-api.cgi/v1/sites/1/customobjects?search=愛知県名古屋市千種区城山新町1丁目&searchFields=name

マッチした場合、下のようなJSONが返りますので、customFieldsから緯度、経度を取得します。

{"items":[{"modified_on":"20160912122317","keywords":null,"author":{"displayName":"Junnama Noda","userpicUrl":null},"folder":null,"id":"3967","set_period":null,"blog":{"id":"1"},"tags":[],"basename":"customobject","customFields":[{"value":"35.173186","basename":"location_latitude"},{"basename":"location_longitude","value":"136.957627"}],"authored_on":"20160912122317","body":null,"status":"Publishing","category_id":null,"name":"\u611b\u77e5\u770c\u540d\u53e4\u5c4b\u5e02\u5343\u7a2e\u533a\u57ce\u5c71\u65b0\u753a\uff11\u4e01\u76ee","period_on":"20160912122317","permalink":""}],"totalResults":"1"}

その他の参考記事


カテゴリー
PowerCMS 3
PowerCMS 4
技術情報
設定・管理画面カスタマイズ

Recent Entries