지도 검색 기능은 웹 사이트에서 많이 사용되는 기능 중 하나입니다. 사용자가 특정 장소나 주소를 검색하고 해당 위치를 지도상에서 확인할 수 있습니다. 이번 글에서는 자바스크립트 Turbolinks를 이용하여 웹 사이트에 지도 검색 기능을 구현하는 방법을 알아보겠습니다.
Turbolinks란?
Turbolinks는 웹 애플리케이션의 페이지 이동을 더 빠르게 처리하는 자바스크립트 라이브러리입니다. 기존의 전체 페이지를 새로 고치는 방식이 아니라, 필요한 부분만을 업데이트하여 페이지 이동을 처리합니다. 이를 통해 사용자 경험을 향상시키고 웹 사이트의 응답 속도를 높일 수 있습니다.
지도 검색 기능 구현하기
-
지도 API 키 발급하기: 먼저, 웹 사이트에서 사용할 지도 API 키를 발급받아야 합니다. 대표적인 지도 API 서비스로는 Google Maps API, Kakao Maps API 등이 있습니다. 해당 서비스의 개발자 등록 과정을 거쳐 API 키를 발급받으세요.
-
HTML 구조 작성하기: 검색 입력란과 지도를 표시할 영역을 담는 div 요소를 HTML에 추가합니다. 예를 들어, 다음과 같이 작성할 수 있습니다.
<div id="map"></div> <input type="text" id="search-input" placeholder="장소 또는 주소를 입력하세요">
-
자바스크립트 코드 작성하기: Turbolinks를 이용하여 페이지 이동을 처리할 자바스크립트 코드를 작성합니다. 먼저, Turbolinks와 지도 API 스크립트를 로드하는 코드를 작성합니다.
<script src="https://cdnjs.cloudflare.com/ajax/libs/turbolinks/5.2.0/turbolinks.js"></script> <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY"></script>
-
지도 초기화하기: 페이지가 로드된 후에 실행될 초기화 함수를 작성합니다. 해당 함수에서는 검색 입력란에 입력된 값을 기반으로 지도를 초기화하고 해당 위치를 표시합니다.
function initMap() { var map = new google.maps.Map(document.getElementById('map'), { zoom: 12, center: {lat: YOUR_LATITUDE, lng: YOUR_LONGITUDE} }); var searchInput = document.getElementById('search-input'); var searchBox = new google.maps.places.SearchBox(searchInput); map.controls[google.maps.ControlPosition.TOP_LEFT].push(searchInput); map.addListener('bounds_changed', function() { searchBox.setBounds(map.getBounds()); }); var markers = []; searchBox.addListener('places_changed', function() { var places = searchBox.getPlaces(); if (places.length === 0) { return; } markers.forEach(function(marker) { marker.setMap(null); }); markers = []; var bounds = new google.maps.LatLngBounds(); places.forEach(function(place) { if (!place.geometry) { console.log("Returned place contains no geometry"); return; } markers.push(new google.maps.Marker({ map: map, title: place.name, position: place.geometry.location })); if (place.geometry.viewport) { bounds.union(place.geometry.viewport); } else { bounds.extend(place.geometry.location); } }); map.fitBounds(bounds); }); }
-
이벤트 리스너 등록하기: 페이지가 로드될 때
initMap
함수를 호출하도록 이벤트 리스너를 등록합니다.document.addEventListener('turbolinks:load', function() { initMap(); });
위의 과정을 통해 자바스크립트 Turbolinks를 이용한 웹 사이트의 지도 검색 기능을 구현할 수 있습니다. 사용자가 검색 입력란에 장소 또는 주소를 입력하면 해당 위치가 지도 상에 표시됩니다. Turbolinks를 이용하여 페이지 이동 속도를 높이면서 웹 사이트의 사용성을 개선할 수 있습니다.
참고 자료:
- Turbolinks: https://github.com/turbolinks/turbolinks
- Google Maps JavaScript API: https://developers.google.com/maps/documentation/javascript/overview
- Kakao Maps API: https://apis.map.kakao.com/