OpenLayers einrichten
Schritte zur Verwendung von OpenLayers im Web über MapConductor. Es ist kein Schlüssel erforderlich und eignet sich, wenn Sie die Projektion und Kachelquellen detailliert steuern möchten.
Bevor Sie beginnen
Installieren
ol ist im Paket enthalten.
npm install @mapconductor/js-sdk-core @mapconductor/js-sdk-react \
@mapconductor/react-for-openlayersStylesheet laden
Wird nur einmal im Einstiegspunkt der App geladen. Wenn Sie dies vergessen, gehen die Position der Karte und das Aussehen der Steuerelemente verloren.
import '@mapconductor/react-for-openlayers/style.css';
TileSource festlegen
OpenLayersDesign ist eine Konstante, die die TileSource von OpenLayers umschließt. Die Standard-OpenStreetMap verwendet die OSM-Quelle von ol und verfügt auch über eine Namensnennung.
PRÜFEN
Was Sie sehen sollten
Es ist fertig, wenn die Karte angezeigt wird.
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>
);
}Kartendesigns
OpenLayersDesign ist eine Konstante, die die TileSource von ol umschließt.
Fehlerbehebung
Neigung und Drehung funktionieren nicht
- OpenLayers hat keine native 3D-Kamera. MapConductor nähert sich Neigung und Peilung mit CSS-3D-Transformationen an. Es ist nur ein visueller Effekt.
Die Position der Karte geht verloren
- Überprüfen Sie, ob style.css geladen ist.
Die Karte wird nur während der Entwicklung doppelt initialisiert
- React StrictMode führt den Effekt zweimal aus. Jeder Anbieter erkennt dies und verwirft einen von ihnen, sodass es nicht notwendig ist, StrictMode zu entfernen.
Weiter
Wenn Sie die native Funktion von OpenLayers benötigen, können Sie die Map-Instanz von ol aus MapViewHolder extrahieren und direkt bearbeiten.