feature/modernize-and-enhance #4

Merged
steve-admin merged 8 commits from feature/modernize-and-enhance into main 2026-03-17 00:13:42 +00:00
Showing only changes of commit e764efb189 - Show all commits
+17 -5
View File
@@ -8,6 +8,7 @@ const APP = () => {
const mapContainerRef = useRef(null); const mapContainerRef = useRef(null);
const mapRef = useRef(null); const mapRef = useRef(null);
const startMarkerRef = useRef(null); const startMarkerRef = useRef(null);
const cityMarkersRef = useRef([]);
const [selectedPoint, setSelectedPoint] = useState({ lat: 51.5074, lon: -0.1278 }); const [selectedPoint, setSelectedPoint] = useState({ lat: 51.5074, lon: -0.1278 });
const [direction, setDirection] = useState(45); const [direction, setDirection] = useState(45);
const [lineOfSightData, setLineOfSightData] = useState(null); const [lineOfSightData, setLineOfSightData] = useState(null);
@@ -67,7 +68,8 @@ const APP = () => {
startMarkerRef.current.setLngLat([lng, lat]); startMarkerRef.current.setLngLat([lng, lat]);
} }
// Clear previous final line when moving start point // Clear previous final results when moving start point
clearCityMarkers();
if (mapRef.current.getSource('line-of-sight')) { if (mapRef.current.getSource('line-of-sight')) {
mapRef.current.removeLayer('line-of-sight'); mapRef.current.removeLayer('line-of-sight');
mapRef.current.removeSource('line-of-sight'); mapRef.current.removeSource('line-of-sight');
@@ -79,6 +81,13 @@ const APP = () => {
}; };
}, []); }, []);
const clearCityMarkers = () => {
if (cityMarkersRef.current) {
cityMarkersRef.current.forEach(marker => marker.remove());
cityMarkersRef.current = [];
}
};
useEffect(() => { useEffect(() => {
// Update preview whenever point or direction changes // Update preview whenever point or direction changes
if (mapRef.current && mapRef.current.isStyleLoaded()) { if (mapRef.current && mapRef.current.isStyleLoaded()) {
@@ -157,8 +166,8 @@ const APP = () => {
tolerance tolerance
); );
setLineOfSightData(response.data); setLineOfSightData(response.data.data);
renderLineOnMap(response.data); renderLineOnMap(response.data.data);
} catch (error) { } catch (error) {
console.error('Error fetching line of sight:', error); console.error('Error fetching line of sight:', error);
} finally { } finally {
@@ -170,7 +179,8 @@ const APP = () => {
const map = mapRef.current; const map = mapRef.current;
if (!map) return; if (!map) return;
// Clear existing line // Clear existing results
clearCityMarkers();
if (map.getSource('line-of-sight')) { if (map.getSource('line-of-sight')) {
map.removeLayer('line-of-sight'); map.removeLayer('line-of-sight');
map.removeSource('line-of-sight'); map.removeSource('line-of-sight');
@@ -219,12 +229,14 @@ const APP = () => {
`; `;
// Add marker to map // Add marker to map
new maplibregl.Marker(el) const marker = new maplibregl.Marker(el)
.setLngLat([city.lon, city.lat]) .setLngLat([city.lon, city.lat])
.setPopup(new maplibregl.Popup().setHTML( .setPopup(new maplibregl.Popup().setHTML(
`<strong>${city.name}</strong><br/>Population: ${city.population.toLocaleString()}<br/>Distance: ${city.distance_km} km` `<strong>${city.name}</strong><br/>Population: ${city.population.toLocaleString()}<br/>Distance: ${city.distance_km} km`
)) ))
.addTo(map); .addTo(map);
cityMarkersRef.current.push(marker);
}); });
// Fit bounds to show line // Fit bounds to show line