Skip to content

Commit 78fa270

Browse files
DennisOSRMCopilot
andauthored
Auto-toggle Bike overlay on profile selection (#441)
When selecting the bike profile, automatically enable the 'Bike' overlay if it wasn't active. If the overlay was auto-enabled, remove it when switching away from the bike profile; if the overlay was previously selected by the user, leave it alone. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent be29244 commit 78fa270

1 file changed

Lines changed: 33 additions & 0 deletions

File tree

src/index.js

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ var ItineraryBuilder = require('./itinerary_builder')(mergedOptions.language);
3535

3636
var mapLayer = leafletOptions.layer;
3737
var overlay = leafletOptions.overlay;
38+
39+
// Track whether the Bike overlay was auto-enabled by profile selection
40+
var bikeOverlayAutoActivated = false;
41+
var bikeOverlayOriginallyActive = false;
3842
var baselayer = ls.get('layer') ? mapLayer[0][ls.get('layer')] : leafletOptions.defaultState.layer;
3943
var layers = ls.get('getOverlay') && [baselayer, overlay['Small Components']] || baselayer;
4044
var map = L.map('map', {
@@ -327,6 +331,35 @@ if (toolsControl && toolsControl.on) {
327331
}
328332
}());
329333

334+
// Auto-toggle Bike overlay when profile selection changes
335+
if (modeSelector && modeSelector.select) {
336+
L.DomEvent.on(modeSelector.select, 'change', function(event) {
337+
var profileIndex = parseInt(event.target.value, 10);
338+
var selectedProfile = leafletOptions.services[profileIndex] && leafletOptions.services[profileIndex].profile;
339+
var bikeLayer = overlay && overlay['Bike'];
340+
if (!bikeLayer) return;
341+
342+
if (selectedProfile === 'bike') {
343+
if (map.hasLayer(bikeLayer)) {
344+
bikeOverlayOriginallyActive = true;
345+
bikeOverlayAutoActivated = false;
346+
} else {
347+
bikeOverlayOriginallyActive = false;
348+
map.addLayer(bikeLayer);
349+
bikeOverlayAutoActivated = true;
350+
}
351+
} else {
352+
if (bikeOverlayAutoActivated) {
353+
if (map.hasLayer(bikeLayer) && !bikeOverlayOriginallyActive) {
354+
map.removeLayer(bikeLayer);
355+
}
356+
bikeOverlayAutoActivated = false;
357+
bikeOverlayOriginallyActive = false;
358+
}
359+
}
360+
});
361+
}
362+
330363
// Hide directions pane by default
331364
var routingContainer = document.querySelector('.leaflet-routing-container');
332365
if (routingContainer) {

0 commit comments

Comments
 (0)