본문으로 건너뛰기

DataLayer

DataLayer 컴포넌트는 geojson/gpx/kml 데이터를 지도에 표시합니다.

기본 사용법

import { DataLayer, Map } from "@rousen/react-naver-maps";

function App() {
return (
<Map ncpKeyId="your-ncp-key-id">
<DataLayer type="geojson" data="/data/sample-geojson.json" />
</Map>
);
}

Props

주요 Props

PropTypeDefaultDescription
type"geojson" | "gpx" | "kml"-데이터 타입 (필수)
datastring | naver.maps.GeoJSON | naver.maps.GPX | naver.maps.KML-URL 또는 파싱된 데이터 (필수)
autoStylebooleantrue자동 스타일 적용 여부
stylenaver.maps.StyleOptions | naver.maps.StylingFunction-데이터 레이어 스타일
onLoad(layer: naver.maps.Data) => void-로딩 완료 시
onError(error: Error) => void-로딩 실패 시

이벤트 핸들러

PropTypeDescription
onAddFeature(event: naver.maps.FeatureEvent) => void피처 추가 시
onRemoveFeature(event: naver.maps.FeatureEvent) => void피처 제거 시
onSetFeature(event: naver.maps.FeatureEvent) => void피처 설정 시
onSetGeometry(event: naver.maps.FeatureEvent) => void지오메트리 변경 시
onSetProperty(event: naver.maps.PropertyEvent) => void속성 변경 시
onRemoveProperty(event: naver.maps.PropertyEvent) => void속성 제거 시
onClick(event: naver.maps.PointerEvent) => void클릭 시
onDblclick(event: naver.maps.PointerEvent) => void더블 클릭 시
onRightclick(event: naver.maps.PointerEvent) => void우클릭 시
onMouseDown(event: naver.maps.PointerEvent) => void마우스 버튼 누를 때
onMouseUp(event: naver.maps.PointerEvent) => void마우스 버튼 뗄 때
onMouseOver(event: naver.maps.PointerEvent) => void마우스 진입 시
onMouseOut(event: naver.maps.PointerEvent) => void마우스 나갈 시
onMouseMove(event: naver.maps.PointerEvent) => void마우스 이동 시

예제

GeoJSON 스타일 적용

<Map ncpKeyId="your-ncp-key-id">
<DataLayer
type="geojson"
data="/data/sample-geojson.json"
style={{
fillColor: "#60a5fa",
fillOpacity: 0.35,
strokeColor: "#2563eb",
strokeOpacity: 0.9,
strokeWeight: 2,
}}
onClick={(event) => {
const name = event.feature.getProperty("name");
console.log("선택된 영역:", name);
}}
/>
</Map>

GPX 로딩 상태

<Map ncpKeyId="your-ncp-key-id">
<DataLayer
type="gpx"
data="/data/sample-gpx.gpx"
onLoad={() => console.log("GPX 로딩 완료")}
onError={(error) => console.error("GPX 로딩 실패", error)}
style={{ strokeColor: "#22c55e", strokeWeight: 3 }}
/>
</Map>

참고

  • data에 URL 문자열을 전달하면 내부에서 fetch로 로딩합니다. 외부 도메인일 경우 CORS 설정이 필요합니다.
  • data에 객체를 전달하는 경우 타입에 맞는 값(GeoJSON, GPX, KML)을 넘겨주세요.
  • stylenaver.maps.Data.setStyle로 적용됩니다.