Я впервые использую Leaflet, поэтому я немного растерялся, пытаясь понять документы. Я пытаюсь создать пользовательскую карту с помощью ответной листовки с помощью компонента ImageOverlay. Я изо всех сил стараюсь, чтобы размер компонента карты был таким же, как мой рисунок. Боюсь, я не совсем понимаю bounds
, но я думаю, что это то, что я должен использовать здесь. Я попытался использовать getBounds()
, чтобы увидеть, могут ли они получить необходимые мне границы, но я не думаю, что моя реализация с refs
верна. Вот мой код:
import React, { useState, useRef, useEffect } from "react";
import { Map, ImageOverlay } from "react-leaflet";
import { CRS, getBounds } from "leaflet";
export default () => {
const [bounds, setBounds] = useState([]);
const mapRef = useRef(null);
useEffect(() => {
setBounds(mapRef.current.leafElement.getBounds());
}, []);
return (
<Map
center={initialPos}
zoom={0}
ref={mapRef}
minZoom={0}
crs={CRS.Simple}
>
<ImageOverlay url="https://i.imgur.com/Ion6X7C.jpg" />
</Map>
);
};
Записывая новый bounds
в useEffect
, я получаю объект, который выглядит следующим образом:
LatLngBounds {
_southWest: LatLng {lat: -110, lng: -95},
_northEast: LatLng {lat: 290, lng: 565}
}
Но я все еще получаю следующая ошибка:
Cannot read property 'lat' of undefined
Я ссылался на этот вопрос и на этот вопрос , чтобы помочь мне понять, как установить границы таким образом, чтобы соответствовать Сопоставьте с размером моего изображения, но изо всех сил пытались преобразовать их в функциональные компоненты