import React, { useEffect, useState } from "react"; import { useMap } from "../MapComponent"; const Scale: React.FC = () => { const map = useMap(); const [zoomLevel, setZoomLevel] = useState(0); const [coordinates, setCoordinates] = useState<[number, number]>([0, 0]); useEffect(() => { if (!map) return; const updateZoomLevel = () => { const zoom = map.getView().getZoom(); setZoomLevel(zoom ?? 0); // 如果 zoom 是 undefined,则使用默认值 0 }; const updateCoordinates = (event: any) => { const coords = event.coordinate; const transformedCoords = coords.map((c: number) => parseFloat(c.toFixed(4)) ); setCoordinates(transformedCoords); }; map.on("moveend", updateZoomLevel); map.on("pointermove", updateCoordinates); // Initialize values updateZoomLevel(); return () => { map.un("moveend", updateZoomLevel); map.un("pointermove", updateCoordinates); }; }, [map]); return (
缩放: {zoomLevel.toFixed(1)}
坐标: {coordinates[0]}, {coordinates[1]}
); }; export default Scale;