เอกสาร / การตั้งค่า / React / TomTom
การตั้งค่า TomTom
ขั้นตอนการใช้ TomTom Orbis Maps บนเว็บผ่าน MapConductor เป็นการ wrap @tomtom-org/maps-sdk (based on maplibre)
PACKAGE
react-for-tomtom
API KEY
จำเป็น
CSS
ไม่จำเป็น
REACT NATIVE
ไม่มี
ก่อนเริ่ม
Node.js 18 ขึ้นไป
คีย์ Orbis Maps API จาก TomTom Developer Portal
STEP 01
ติดตั้ง
@tomtom-org/maps-sdk และ maplibre-gl ถูกรวมอยู่ในแพ็กเกจ
terminalnpm
npm install @mapconductor/js-sdk-core @mapconductor/js-sdk-react \
@mapconductor/react-for-tomtomSTEP 02
ส่งคีย์ API ไปยัง state hook
ส่งคีย์ไปยัง state hook ไม่ใช่ props ของ view component เพราะหากวางไว้ใน props มันจะปนอยู่ใน log และ snapshot ของการทดสอบ
TomTomMap.tsxTypeScript · React
const state = useTomTomViewState({
apiKey: import.meta.env.VITE_TOMTOM_API_KEY,
mapDesignType: TomTomDesign.Standard,
cameraPosition: createMapCameraPosition({ position: AMSTERDAM, zoom: 11 }),
});ข้อควรระวัง
ส่งคีย์ผ่านตัวแปรสภาพแวดล้อมตอน build (สำหรับ Vite ใช้ import.meta.env.VITE_*) และอย่าใส่ไว้ใน source control เนื่องจากคีย์ถูกส่งไปยัง frontend จึงต้องระบุข้อจำกัด referrer หรือ domain อย่างแน่นอนเพื่อป้องกันความเสียหายหากเปิดเผยสู่สาธารณะ
ตรวจสอบ
สิ่งที่ควรเห็น
เรียบร้อยเมื่อแผนที่ TomTom ปรากฏขึ้น
TomTomMap.tsxTypeScript · React
import { useState } from 'react';
import { createGeoPoint, createMapCameraPosition, createMarkerState } from '@mapconductor/js-sdk-core';
import { Marker } from '@mapconductor/js-sdk-react';
import { TomTomDesign, TomTomMapView2D, useTomTomViewState } from '@mapconductor/react-for-tomtom';
const AMSTERDAM = createGeoPoint({ latitude: 52.3676, longitude: 4.9041 });
export function TomTomMap() {
const state = useTomTomViewState({
apiKey: import.meta.env.VITE_TOMTOM_API_KEY,
mapDesignType: TomTomDesign.Standard,
cameraPosition: createMapCameraPosition({ position: AMSTERDAM, zoom: 11 }),
});
const [markerState] = useState(() => createMarkerState({ id: 'ams', position: AMSTERDAM }));
return (
<TomTomMapView2D state={state} style={{ height: 480 }}>
<Marker state={markerState} />
</TomTomMapView2D>
);
}ดีไซน์แผนที่
TomTomDesign รองรับสไตล์ของ Orbis Maps มีทั้งคู่แบบสว่างและมืดให้เลือก
TomTomDesign
Notes
Standard / StandardLight / StandardDark
สไตล์มาตรฐานสำหรับการดู
Driving / DrivingLight / DrivingDark
สำหรับการขับขี่
MonoLight / MonoDark
สีเดียว เหมาะสำหรับฐานในการวางข้อมูล
Satellite
ภาพดาวเทียม
การแก้ปัญหา
แผนที่ขาวสะอาด
- ตรวจสอบว่า apiKey ไม่ใช่สตริงว่างเปล่า
- ตรวจสอบว่าคีย์ถูกออกให้สำหรับ Orbis Maps หรือไม่
ระดับการซูมแตกต่างจากผู้ให้บริการรายอื่น
- การซูมของ TomTom ขึ้นอยู่กับละติจูด MapConductor ใช้ละติจูดของกล้องในการแปลงระดับการซูมให้เทียบเท่ากับ Google
แผนที่ถูกเริ่มต้นสองครั้งเฉพาะตอนพัฒนา
- React StrictMode จะทำงาน effect สองครั้ง ผู้ให้บริการแต่ละรายตรวจจับสิ่งนี้และทำการลบอินสแตนซ์หนึ่งออก ดังนั้นจึงไม่จำเป็นต้องปิด StrictMode
ถัดไป
TomTomMapView เป็น 3D, TomTomMapView2D เป็น 2D ทั้งสองแชร์ state object เดียวกัน