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

การตั้งค่า OpenLayers

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

PACKAGE
react-for-openlayers
API KEY
ไม่จำเป็น
CSS
จำเป็น
3D CAMERA
จำลอง

ก่อนเริ่ม

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

ติดตั้ง

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

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

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

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

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

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

OpenLayersDesign เป็นค่าคงที่ที่ห่อหุ้ม TileSource ของ OpenLayers OpenStreetMap เริ่มต้นใช้แหล่ง OSM จาก ol และมีการระบุแหล่งที่มาด้วย

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

ตรวจสอบ

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

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

OpenLayersMap.tsxTypeScript · React
import { useState } from 'react';
import { createGeoPoint, createMapCameraPosition, createMarkerState } from '@mapconductor/js-sdk-core';
import { Marker } from '@mapconductor/js-sdk-react';
import { OpenLayersDesign, OpenLayersMapView, useOpenLayersMapViewState } from '@mapconductor/react-for-openlayers';
import '@mapconductor/react-for-openlayers/style.css';

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

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

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

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

OpenLayersDesign เป็นค่าคงที่ที่ห่อหุ้ม TileSource ของ ol

OpenLayersDesign
Notes
OpenStreetMap
แหล่ง OSM จาก ol พร้อมการระบุแหล่งที่มา
None
ไม่มีไทล์พื้นฐาน

การแก้ปัญหา

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

  • OpenLayers ไม่มีกล้อง 3D แบบเนทีฟ MapConductor ประมาณค่าความเอียงและทิศทางด้วยการแปลง 3D ของ CSS เป็นเพียงเอฟเฟกต์ทางสายตาเท่านั้น

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

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

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

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

ถัดไป

หากคุณต้องการฟังก์ชันเนทีฟของ OpenLayers คุณสามารถแยกอินสแตนซ์ Map ของ ol จาก MapViewHolder และจัดการโดยตรงได้