เอกสาร / การตั้งค่า / React / ArcGIS
การตั้งค่า ArcGIS
ขั้นตอนการใช้ ArcGIS บนเว็บผ่าน MapConductor @arcgis/core รวมอยู่ในแพ็กเกจ และ CSS ธีมของ Esri จะถูกโหลดโดยแพ็กเกจ
PACKAGE
react-for-arcgis
API KEY
จำเป็น
CSS
อัตโนมัติ
REACT NATIVE
มี
ก่อนเริ่ม
Node.js 18 ขึ้นไป
คีย์ API ของ ArcGIS Location Platform
STEP 01
ติดตั้ง
@arcgis/core รวมอยู่ในแพ็กเกจ CSS ธีมของ Esri จะถูกโหลดจากฝั่งมุมมองด้วย ดังนั้นคุณไม่ต้องทำการ import เอง
terminalnpm
npm install @mapconductor/js-sdk-core @mapconductor/js-sdk-react \
@mapconductor/react-for-arcgisSTEP 02
ส่งคีย์ API ไปยังส่วนเชื่อมต่อสถานะ
ส่งคีย์ไปยังส่วนเชื่อมต่อสถานะ ไม่ใช่ไปยัง 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 ออกเป็น dynamic import จะช่วยลดการโหลดเริ่มต้นได้
เกิดข้อผิดพลาดลำดับ hook เมื่อสลับ provider
- React ไม่สามารถเปลี่ยนลำดับการเรียกใช้ hook ได้ ให้สร้างคอมโพเนนต์เล็กๆ สำหรับแต่ละ provider และเรียกใช้ hook ของ provider นั้นภายใน ไดเร็กทอรี providers/ ในแอปตัวอย่างมีโครงสร้างนี้
ถัดไป
ArcGIS สามารถจัดการสินทรัพย์ GIS ได้โดยตรง หาก API ทั่วไปไม่เพียงพอ คุณสามารถดึงมุมมองเนทีฟจาก MapViewHolder และควบคุมได้โดยตรง