// ---- Editable trip stops (by name) ----
const PLACES = [
{ name: "Entebbe International Airport" },
{ name: "Kasenyi Plains, Queen Elizabeth National Park" },
{ name: "Mweya Jetty, Kazinga Channel" },
{ name: "Kyambura Gorge" },
{ name: "Ishasha Sector, Queen Elizabeth National Park" },
{ name: "Kampala, Uganda" }
];
let map, placesService, directionsService, directionsRenderer;
function initQENP() {
map = new google.maps.Map(document.getElementById("qenp-map"), {
center: { lat: 0.1, lng: 30.0 }, // Western Uganda
zoom: 7,
mapTypeControl: false,
streetViewControl: false,
});
placesService = new google.maps.places.PlacesService(map);
directionsService = new google.maps.DirectionsService();
directionsRenderer = new google.maps.DirectionsRenderer({ suppressMarkers: true });
directionsRenderer.setMap(map);
// Look up each place by text search, place markers, then build a route
Promise.all(PLACES.map(p => searchPlace(p.name))).then(results => {
const waypoints = [];
const markers = [];
results.forEach((res, i) => {
const pos = res.geometry.location;
// Marker
const marker = new google.maps.Marker({
map,
position: pos,
label: String(i + 1),
title: PLACES[i].name
});
markers.push(marker);
// Info window
const info = new google.maps.InfoWindow({
content: `${PLACES[i].name}`
});
marker.addListener("click", () => info.open({ anchor: marker, map }));
// Collect waypoints (exclude first & last)
if (i > 0 && i {
if (status === google.maps.DirectionsStatus.OK) {
directionsRenderer.setDirections(res);
} else {
console.warn("Directions request failed:", status);
}
}
);
}).catch(err => console.error(err));
}
function searchPlace(query) {
return new Promise((resolve, reject) => {
placesService.textSearch({ query, region: "UG" }, (results, status) => {
if (status === google.maps.places.PlacesServiceStatus.OK && results[0]) {
resolve(results[0]);
} else {
reject(`Place not found: ${query} (${status})`);
}
});
});
}