Mapbox 지도에 Kaleidr Chat 연결하기
이 가이드를 마치면 Mapbox GL JS 지도 안에 채팅 패널을 배치한 페이지가 완성됩니다. 방문자가 질문하면 답변이 패널에 순차적으로 표시되고, 답변 속 장소가 Mapbox 지도에 핀으로 나타나며 카메라가 이동해 해당 장소를 보여줍니다. Free를 포함한 모든 요금제에서 게시 가능 키로 사용할 수 있습니다. 질문할 때 조직의 AI 크레딧이 소비됩니다.
시작하기 전에
- kaleidr.com/api-keys의 Kaleidr 게시 가능 키(
kld_pk_live_…). 새 키에는 Chat에 필요한ai범위가 기본 포함됩니다. API 키 발급을 참고하세요. - 제한이 있다면 페이지 출처가 키의 허용 출처에 포함되어야 합니다. 로컬 개발에서는
http://localhost:8080등을 추가하세요. - Mapbox 계정의 Mapbox 액세스 토큰(
pk.…). 지도 요금은 Mapbox에서, 질문 요금은 Kaleidr에서 별도로 청구합니다. - script 태그로 Mapbox GL JS를 로드하여
window.mapboxgl이 존재해야 합니다. npm에서 가져오는 경우 npm 라이브러리를 페이지 전역으로 노출하기를 읽으세요. -
npx serve또는python -m http.server 8080같은 HTTP 서버. 디스크에서 직접 파일을 열면 작동하지 않습니다. - 콘텐츠 보안 정책이 있다면 콘텐츠 보안 정책에 명시된 호스트를 허용하세요.
1단계: 지도와 채팅 레이어 배치하기
지도와 채팅 마운트 대상을 하나의 위치 지정 컨테이너 안에 배치하세요. 채팅 레이어는 지도 위에 겹치지만 포인터 이벤트는 통과시킵니다.
<div id="mapHost" style="position:relative; height:520px">
<div id="map" style="position:absolute; inset:0; z-index:0"></div>
<div id="chat" style="position:absolute; inset:0; z-index:1; pointer-events:none"></div>
</div>
예상 결과: 아직 지도는 보이지 않고 높이 520px의 빈 영역만 생깁니다. 테마 및 레이아웃에서 각 설정을 설명합니다.
2단계: Mapbox GL JS 로드 및 지도 생성하기
페이지 head에서 스타일시트를, 자체 코드보다 앞에서 스크립트를 로드하세요. 스타일시트가 없으면 지도가 제대로 렌더링되지 않습니다.
<link rel="stylesheet" href="https://api.mapbox.com/mapbox-gl-js/v3.9.4/mapbox-gl.css" />
<script src="https://api.mapbox.com/mapbox-gl-js/v3.9.4/mapbox-gl.js"></script>
<script>
mapboxgl.accessToken = 'pk.…';
const map = new mapboxgl.Map({
container: 'map',
style: 'mapbox://styles/mapbox/streets-v12',
center: [-0.12, 51.5],
zoom: 11,
});
</script>
예상 결과: 끌어서 이동하고 확대·축소할 수 있는 런던 중심부의 Mapbox 지도가 표시됩니다.
3단계: kaleidr.js 로드하기
Mapbox 스크립트 뒤, 채팅 패널을 마운트하는 코드 앞에 Kaleidr 로더를 추가하세요.
<script src="https://cdn.kaleidr.com/embed/v1/kaleidr.js"></script>
예상 결과: 화면은 변하지 않습니다. 콘솔에서 Kaleidr.version을 확인하면 버전 문자열이 반환됩니다.