Doku / Einrichtung / React / TomTom

TomTom einrichten

Schritte zur Verwendung von TomTom Orbis Maps im Web mit MapConductor. @tomtom-org/maps-sdk (basierend auf maplibre) wird dabei gewrappt.

PACKAGE
react-for-tomtom
API KEY
Erforderlich
CSS
Nicht erforderlich
REACT NATIVE
Keine
Derselbe Anbieter, andere PlattformenAndroidiOS

Bevor Sie beginnen

Node.js 18 oder höher
Orbis Maps API-Schlüssel vom TomTom Developer Portal
STEP 01

Installieren

@tomtom-org/maps-sdk und maplibre-gl sind im Paket enthalten.

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

API-Schlüssel an State-Hook übergeben

Den Schlüssel an einen State-Hook übergeben, nicht an die props der View-Komponente. Andernfalls würde er in Test-Logs und Snapshots erscheinen.

TomTomMap.tsxTypeScript · React
const state = useTomTomViewState({
  apiKey: import.meta.env.VITE_TOMTOM_API_KEY,
  mapDesignType: TomTomDesign.Standard,
  cameraPosition: createMapCameraPosition({ position: AMSTERDAM, zoom: 11 }),
});
ACHTUNG
Den Schlüssel über Umgebungsvariablen zur Build-Zeit übergeben (bei Vite z. B. import.meta.env.VITE_*) und nicht in die Quellcodeverwaltung einchecken. Da der Schlüssel an das Frontend weitergegeben wird, müssen unbedingt Referrer- oder Domain-Einschränkungen gesetzt werden, um Schäden bei einer Veröffentlichung zu vermeiden.

PRÜFEN

Was Sie sehen sollten

Fertig, wenn die TomTom-Karte angezeigt wird.

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>
  );
}

Kartendesigns

TomTomDesign unterstützt die Stile von Orbis Maps. Es sind Paare für hell und dunkel verfügbar.

TomTomDesign
Notes
Standard / StandardLight / StandardDark
Standard-Stil für die Anzeige
Driving / DrivingLight / DrivingDark
Für die Fahrt
MonoLight / MonoDark
Einfarbig. Als Basis für Daten gedacht.
Satellite
Satellitenbilder

Fehlerbehebung

Karte bleibt komplett weiß

  • Überprüfen, ob apiKey kein leerer String ist.
  • Überprüfen, ob der Schlüssel für Orbis Maps ausgestellt wurde.

Zoom weicht von anderen Anbietern ab

  • Der Zoom bei TomTom hängt vom Breitengrad ab. MapConductor verwendet die Kamera-Breite, um den Zoom in ein Google-äquivalentes Maß umzurechnen.

Nur bei der Entwicklung wird die Karte doppelt initialisiert

  • React StrictMode führt Effects doppelt aus. Jeder Anbieter erkennt dies und verwirft eine der Instanzen, sodass StrictMode nicht deaktiviert werden muss.

Weiter

TomTomMapView ist 3D, TomTomMapView2D ist 2D. Beide teilen sich dasselbe Zustandsobjekt.