diff --git a/public/index.html b/public/index.html index 2a51433bb72d6d5c123a02f23c79c3d7a090c301..55b9d0eed57feff2a739b0f8dfc85858bc714ae9 100644 --- a/public/index.html +++ b/public/index.html @@ -4,14 +4,102 @@ <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Interactive Map</title> - <link rel="stylesheet" href="/css/styles.css"> <link rel="stylesheet" href="https://unpkg.com/leaflet/dist/leaflet.css" /> + <script src="https://unpkg.com/leaflet/dist/leaflet.js"></script> + <script src="https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.0/papaparse.min.js"></script> + <style> + html, body { + height: 100%; + margin: 0; + padding: 0; + } + + #map { + height: 100vh; + width: 100vw; + } + + .custom-pin .pin { + width: 15px; + height: 15px; + border-radius: 50%; + } + </style> </head> <body> <div id="map"></div> - <script src="https://unpkg.com/leaflet/dist/leaflet.js"></script> - <script src="https://cdnjs.cloudflare.com/ajax/libs/PapaParse/5.3.0/papaparse.min.js"></script> - <script src="/js/script.js"></script> + <script> + const map = L.map('map').setView([51.505, -0.09], 13); + + // Add OSM base map + L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { + maxZoom: 19, + }).addTo(map); + + // Embedded CSV data as a string + const csvData = `lat,lng,name,color +51.505,-0.09,Sample Pin,#ff0000`; + + // Function to load pins from CSV and add them to the map + function loadPins() { + Papa.parse(csvData, { + header: true, + complete: function(results) { + results.data.forEach(pin => { + if (pin.lat && pin.lng && pin.name && pin.color) { + const marker = L.marker([parseFloat(pin.lat), parseFloat(pin.lng)], { + title: pin.name, + icon: L.divIcon({ + className: 'custom-pin', + html: `<div style="background-color: ${pin.color};" class="pin"></div>` + }) + }).addTo(map); + + marker.bindPopup(`<b>${pin.name}</b>`); + } + }); + } + }); + } + + // Call the function to load pins from the CSV + loadPins(); + + // Add click event to the map to add new pins + map.on('click', function(e) { + const name = prompt("Enter pin name:"); + const color = prompt("Enter pin color (e.g., red, #ff0000):"); + + if (name && color) { + const newPin = { + lat: e.latlng.lat, + lng: e.latlng.lng, + name: name, + color: color + }; + + // Display the new pin on the map + const marker = L.marker([newPin.lat, newPin.lng], { + title: newPin.name, + icon: L.divIcon({ + className: 'custom-pin', + html: `<div style="background-color: ${newPin.color};" class="pin"></div>` + }) + }).addTo(map); + + marker.bindPopup(`<b>${newPin.name}</b>`); + + // Simulate saving the pin by logging it to the console + addPinToCSV(newPin); + } + }); + + // Function to simulate adding a pin to the CSV (logs to the console) + function addPinToCSV(pin) { + const csvLine = `${pin.lat},${pin.lng},${pin.name},${pin.color}\n`; + console.log("Pin to add to CSV:", csvLine); + } + </script> </body> </html>