LoginSignup
2
1

More than 5 years have passed since last update.

concrete5 8.3系で使えるGeoロケーション機能。これを活用した地図アドオンを公開予定

Last updated at Posted at 2018-02-09

2017年12月にリリースされたconcrete5 バージョン8.3 で、Geoロケーション機能が追加されたので、使ってみたメモです。

Geoロケーション機能

concrete5 の管理画面の【システムと設定 > サーバー設定一覧 > ジオロケーション】 index.php/dashboard/system/environment/geolocation と進むと、下記のような画面が表示されます。
geoplugin.png

【テスト】ボタンを押すと、IPアドレスの情報から緯度経度の情報を取得できます。
geolocation.png

どう使うのか

記事作成時点(2018年2月2日)では、Geoロケーション機能のユーザー向けドキュメントは公開されていないので、ソースコードから調べてみます。

concrete5 のコアで使っている部分を探す

concrete5 のフォーム(問い合わせ等を作る)に、address(住所)という項目があります。addressでは、ユーザー(ホームページ閲覧者)のIPアドレスから、国や地域などを取得しています。 concrete/attributes/address/controller.phpを見ると、

                $geolocated = $this->app->make(GeolocationResult::class);
                $this->set('country', $geolocated->getCountryCode());
                $this->set('postal_code', $geolocated->getPostalCode());
                $this->set('state_province', $geolocated->getStateProvinceCode());
                $this->set('city', $geolocated->getCityName());

というコードがありました。concrete5本体でGeoロケーション機能を実行し、その結果をGeolocationResultクラスを使って活用できるようです。concrete5 はソースコードが公開されている CMS なので、このように調べる作業が楽ですね。

APIドキュメントを読む

開発者向けAPIドキュメントは公開されている(おそらく自動生成プログラムで作成されている)ので、GeolocationResultクラスのドキュメントを見てみます。
そうすると、getLatitude、getLongitudeというメソッドがあることが分かります。これらを使えば、緯度経度が取得できそうです。

書いてみたコード

    $geolocated = $this->app->make(\Concrete\Core\Geolocator\GeolocationResult::class);
    if ($geolocated) { // ジオロケーションが有効な場合
        $data_lat = $geolocated->getLatitude();
        $data_lng = $geolocated->getLongitude();
    } else { // ジオロケーションが無効な場合は、愛知県名古屋市中区栄2-2-1の緯度経度
        $data_lat = 35.16809895181293;
        $data_lng = 136.89892888069156;
    }

活用シーン

現在、オープンストリートマップの地図を表示するアドオンを作成しています。このアドオンでは、地図を新規追加するときに編集画面に地図を表示します。このときの初期位置の指定に、ジオロケーション機能を活用しています。
ジオロケーション機能を活用することで、地図の初期位置が、自分のいる位置の近辺になります。
地図を表示したい人が居る場所の近辺が、ホームページ上に表示したい地図の領域に近い場合に、地図を動かす作業が少なくて済みます。

アドオンは公開準備中

concrete5 のアドオンとして、公式サイトで公開に向けて準備中です。しばらくお待ちください。
アドオンの実際の活用例は、伏見駅から名古屋広小路伏見中駒ビルへの道のりです。

2
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1