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

การตั้งค่า TomTom

ขั้นตอนการใช้ TomTom Orbis Maps บนเว็บผ่าน MapConductor เป็นการ wrap @tomtom-org/maps-sdk (based on maplibre)

PACKAGE
react-for-tomtom
API KEY
จำเป็น
CSS
ไม่จำเป็น
REACT NATIVE
ไม่มี
ผู้ให้บริการเดียวกัน แพลตฟอร์มอื่นAndroidiOS

ก่อนเริ่ม

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-tomtom
STEP 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 เดียวกัน