OpenStreetMap contributors' }).addTo(map); // Define coordinates for the cities var cities = { 'Toronto': [43.7, -79.42], 'Chicago': [41.8781, -87.6298], 'Houston': [29.7604, -95.3698], 'Montreal': [45.5017, -73.5673], 'Charlotte': [35.2271, -80.8431], 'Savannah': [32.0809, -81.0912], 'Tampa': [27.9943, -82.4418], 'Queretaro': [20.5888, -100.3899], 'Minneapolis': [44.9778, -93.2650], 'Detroit': [42.3314, -83.0458], 'Vancouver': [49.2827, -123.1207] }; // Add markers for each city for (var city in cities) { L.marker(cities[city]).addTo(map) .bindPopup(city) .openPopup(); } // Create routes between cities var routes = [ {start: cities['Toronto'], end: cities['Chicago']}, {start: cities['Toronto'], end: cities['Houston']}, {start: cities['Montreal'], end: cities['Charlotte']}, {start: cities['Montreal'], end: cities['Savannah']}, {start: cities['Tampa'], end: cities['Charlotte']}, {start: cities['Queretaro'], end: cities['Minneapolis']}, {start: cities['Montreal'], end: cities['Detroit']}, {start: cities['Montreal'], end: cities['Vancouver']} ]; // Add routes to the map as polylines routes.forEach(function(route) { L.polyline([route.start, route.end], {color: 'blue', weight: 4, opacity: 0.7}).addTo(map); }); // Optional: Add zoom control L.control.zoom().addTo(map);