เอกสาร / การตั้งค่า / 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-openlayersSTEP 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 และจัดการโดยตรงได้