문서 / 설정 / React / ArcGIS
ArcGIS 설정
Web에서 ArcGIS를 MapConductor에서 쓰는 절차입니다. @arcgis/core는 패키지에 동봉되고, Esri의 테마 CSS도 패키지 쪽에서 읽힙니다.
PACKAGE
react-for-arcgis
API KEY
필요
CSS
자동
REACT NATIVE
있음
시작하기 전에
Node.js 18 이상
ArcGIS Location Platform의 API 키
STEP 01
설치한다
@arcgis/core는 패키지에 동봉되어 있습니다. Esri의 테마 CSS도 뷰 쪽에서 읽히므로, 스스로 import 할 필요는 없습니다.
terminalnpm
npm install @mapconductor/js-sdk-core @mapconductor/js-sdk-react \
@mapconductor/react-for-arcgisSTEP 02
API 키를 상태 훅에 넘긴다
키는 뷰 component의 props가 아니라, 상태 훅에 넘깁니다. props에 두면 테스트의 로그나 스냅숏에 섞이기 때문입니다.
ArcGISMap.tsxTypeScript · React
const state = useArcGISViewState({
apiKey: import.meta.env.VITE_ARCGIS_API_KEY,
mapDesignType: ArcGISDesign.Streets,
cameraPosition: createMapCameraPosition({ position: TOKYO, zoom: 12 }),
});주의
키는 빌드 시의 환경 변수(Vite라면 import.meta.env.VITE_*)에서 넘기고, 소스 관리에는 넣지 마세요. 프런트엔드로 전달되는 이상, 공개되어도 피해가 나지 않도록 리퍼러 제한이나 도메인 제한을 반드시 겁니다.
STEP 03
2D와 3D를 나눠 쓴다
ArcGISMapView는 3D의 씬 뷰, ArcGISMapView2D는 2D의 맵 뷰입니다. 둘 다 같은 상태 객체를 공유하므로, 실행 시에 전환할 수 있습니다.
동작 확인
여기까지 보이면 완료
ArcGIS의 지도가 나오면 완료입니다.
ArcGISMap.tsxTypeScript · React
import { useState } from 'react';
import { createGeoPoint, createMapCameraPosition, createMarkerState } from '@mapconductor/js-sdk-core';
import { Marker } from '@mapconductor/js-sdk-react';
import { ArcGISDesign, ArcGISMapView2D, useArcGISViewState } from '@mapconductor/react-for-arcgis';
const TOKYO = createGeoPoint({ latitude: 35.6812, longitude: 139.7671 });
export function ArcGISMap() {
const state = useArcGISViewState({
apiKey: import.meta.env.VITE_ARCGIS_API_KEY,
mapDesignType: ArcGISDesign.Streets,
cameraPosition: createMapCameraPosition({ position: TOKYO, zoom: 12 }),
});
const [markerState] = useState(() => createMarkerState({ id: 'tokyo', position: TOKYO }));
return (
<ArcGISMapView2D state={state} style={{ height: 480 }}>
<Marker state={markerState} />
</ArcGISMapView2D>
);
}지도 디자인
ArcGISDesign은 Esri의 베이스맵에 대응합니다. 여기에 든 것은 일부입니다.
ArcGISDesign
Notes
Streets / StreetsNight / StreetsRelief
도로 지도와 그 변종
Imagery / ImageryLabels
위성 화상과 라벨 포함
Topographic / Terrain
지형도
LightGray / DarkGray
데이터를 얹는 바탕용
Navigation / NavigationNight
내비게이션용
Oceans / ChartedTerritory / Nova
그 밖의 테마별 스타일
잘 안 될 때
지도가 나오지 않는다
- 키가 상태 훅에 전달되고 있는지 확인합니다.
- 키에서 필요한 ArcGIS 서비스가 활성화되어 있는지 확인합니다.
번들이 크다
- @arcgis/core는 큰 라이브러리입니다. ArcGIS를 쓰는 화면만을 동적 import로 잘라내면 초기 로드를 억제할 수 있습니다.
프로바이더를 전환하면 훅의 순서 오류가 나온다
- React는 훅의 호출 순서를 바꿀 수 없습니다. 프로바이더마다 작은 컴포넌트를 만들고, 그 안에서 그 프로바이더의 훅을 호출하는 형태로 합니다. 샘플 앱의 providers/ 디렉터리가 이 구성입니다.
다음
ArcGIS는 GIS 자산을 그대로 다룰 수 있는 것이 강점입니다. 공통 API로 부족한 부분은 MapViewHolder에서 네이티브의 뷰를 꺼내 직접 조작할 수 있습니다.