เอกสาร / การตั้งค่า / React / Leaflet

การตั้งค่า Leaflet

ขั้นตอนการใช้ Leaflet บนเว็บผ่าน MapConductor ไม่จำเป็นต้องใช้คีย์ และเหมาะสำหรับเวลาที่ต้องการแสดงไทล์แรสเตอร์แบบเบาๆ

PACKAGE
react-for-leaflet
API KEY
ไม่จำเป็น
CSS
จำเป็น
3D CAMERA
เทียม

ก่อนเริ่ม

Node.js 18 ขึ้นไป
React 18 หรือ 19
STEP 01

ติดตั้ง

leaflet ถูกรวมอยู่ในแพ็กเกจ

terminalnpm
npm install @mapconductor/js-sdk-core @mapconductor/js-sdk-react \
            @mapconductor/react-for-leaflet
STEP 02

โหลดสไตล์ชีต

โหลดครั้งเดียวที่จุดเริ่มต้นของแอป หากลืม ตำแหน่งแผนที่และรูปลักษณ์ของตัวควบคุมจะเสียหาย

main.tsxTypeScript
import '@mapconductor/react-for-leaflet/style.css';
STEP 03

กำหนดแหล่งที่มาของไทล์

LeafletDesign.OpenStreetMap เริ่มต้นใช้ไทล์สาธารณะของ OpenStreetMap และมีการแสดงที่มาพร้อมด้วย

ข้อควรระวัง
เซิร์ฟเวอร์ไทล์สาธารณะของ OpenStreetMap มีนโยบายการใช้งาน หากส่งการรับส่งข้อมูลเพื่อการผลิต โปรดใช้การส่งมอบไทล์ของคุณเองหรือบริการเชิงพาณิชย์

ตรวจสอบ

สิ่งที่ควรเห็น

หากแผนที่ปรากฏขึ้น ถือว่าเสร็จสิ้น

LeafletMap.tsxTypeScript · React
import { useState } from 'react';
import { createGeoPoint, createMapCameraPosition, createMarkerState } from '@mapconductor/js-sdk-core';
import { Marker } from '@mapconductor/js-sdk-react';
import { LeafletDesign, LeafletMapView, useLeafletMapViewState } from '@mapconductor/react-for-leaflet';
import '@mapconductor/react-for-leaflet/style.css';

const TOKYO = createGeoPoint({ latitude: 35.6812, longitude: 139.7671 });

export function LeafletMap() {
  const state = useLeafletMapViewState({
    mapDesignType: LeafletDesign.OpenStreetMap,
    cameraPosition: createMapCameraPosition({ position: TOKYO, zoom: 12 }),
  });
  const [markerState] = useState(() => createMarkerState({ id: 'tokyo', position: TOKYO }));

  return (
    <LeafletMapView state={state} style={{ height: 480 }}>
      <Marker state={markerState} />
    </LeafletMapView>
  );
}

ดีไซน์แผนที่

LeafletDesign เป็นค่าคงที่ที่ห่อหุ้มเทมเพลต URL ของไทล์ หากคุณใช้ไทล์ของคุณเอง ให้สร้างประเภทเดียวกัน

LeafletDesign
Notes
OpenStreetMap
ไทล์มาตรฐานของ OSM พร้อมการแสดงที่มา ซูมสูงสุด 19
None
ไม่มีสไตล์ฐาน เมื่อต้องการวาดเฉพาะซ้อนทับ

การแก้ปัญหา

การเอียงและการหมุนไม่ทำงาน

  • Leaflet ไม่มีกล้อง 3D แบบเนทีฟ MapConductor ประมาณการเอียงและทิศทางด้วยการแปลง 3D ของ CSS นี่เป็นเพียงเอฟเฟกต์ภาพ ไม่ใช่กล้อง 3D จริง

ตำแหน่งแผนที่เสียหาย

  • ตรวจสอบว่าได้โหลด style.css หรือไม่

แผนที่ถูกเริ่มต้นสองครั้งเฉพาะในระหว่างการพัฒนา

  • React StrictMode ทำงานเอฟเฟกต์สองครั้ง ผู้ให้บริการแต่ละรายตรวจจับสิ่งนี้และทิ้งรายการหนึ่ง ดังนั้นคุณไม่จำเป็นต้องปิดใช้งาน StrictMode

ถัดไป

หากต้องการการแสดงผล 3D ให้พิจารณา MapLibre หรือ Cesium และหากต้องการจัดการการฉายภาพอย่างเคร่งครัด ให้พิจารณา OpenLayers