-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtraffic_map.html
85 lines (74 loc) · 2.65 KB
/
traffic_map.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<!DOCTYPE html>
<html>
<head>
<title>Interactive Traffic Map</title>
<link rel="stylesheet" href="leaflet/leaflet.css" />
<script src="leaflet/leaflet.js"></script>
<style>
#map {
height: 500px;
}
</style>
</head>
<body>
<div id="map"></div>
<script>
// Initialize map
var map = L.map('map').setView([37.7749, -122.4194], 12);
// Add tile layer
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: 'Map data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors',
maxZoom: 18,
}).addTo(map);
// Add GeoJSON layer
var trafficLayer = L.geoJSON().addTo(map);
// Load traffic data
fetch('traffic_data.geojson')
.then(response => response.json())
.then(data => {
trafficLayer.addData(data);
})
.catch(error => console.error(error));
// Add marker layer
var markerLayer = L.layerGroup().addTo(map);
// Handle map click events
map.on('click', function(event) {
// Remove existing markers
markerLayer.clearLayers();
// Add new marker
var marker = L.marker(event.latlng).addTo(markerLayer);
// Display report form
var reportForm = document.createElement('form');
reportForm.innerHTML = `
<h2>Report Traffic</h2>
<p>Location: ${event.latlng.lat.toFixed(4)}, ${event.latlng.lng.toFixed(4)}</p>
<label for="traffic_type">Traffic type:</label>
<select id="traffic_type" name="traffic_type">
<option value="congestion">Congestion</option>
<option value="accident">Accident</option>
<option value="roadwork">Road work</option>
</select>
<br>
<label for="description">Description:</label>
<textarea id="description" name="description"></textarea>
<br>
<button type="submit">Submit</button>
`;
// Handle form submission
reportForm.addEventListener('submit', function(event) {
event.preventDefault();
var formData = new FormData(reportForm);
formData.append('latitude', event.latlng.lat.toFixed(4));
formData.append('longitude', event.latlng.lng.toFixed(4));
// TODO: Send form data to server
alert('Traffic reported successfully!');
});
// Add form to map
L.popup()
.setLatLng(event.latlng)
.setContent(reportForm)
.openOn(map);
});
</script>
</body>
</html>