concrete5 8.3계에서 사용할 수 있는 Geo 로케이션 기능. 이를 활용한 지도 애드온 공개 예정

2017년 12월에 릴리스된 concrete5 버전 8.3 에서, Geo 로케이션 기능이 추가되었으므로, 사용해 본 메모입니다.

Geo 위치 기능



concrete5 의 관리 화면의【시스템과 설정>서버 설정 일람>지오위치】 index.php/dashboard/system/environment/geolocation 라고 진행하면, 아래와 같은 화면이 표시됩니다.


【테스트】 버튼을 누르면 IP 주소 정보에서 위도 경도 정보를 얻을 수 있습니다.


어떻게 사용하는지



기사 작성 시점(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의 애드온으로서 공식 사이트에서 공개를 위해 준비중입니다. 잠시 기다려주세요.
애드온의 실제 활용 예는 후시미역에서 나고야 히로코지 후시미 나카코빌딩까지 가는 길 입니다.

좋은 웹페이지 즐겨찾기