feat: enhance MapViewer with city selection and layout integration

- Added support for city selection in MapViewer, allowing users to click on cities to view details.
- Integrated map layout data to improve city rendering and positioning.
- Introduced SelectedCityPanel to display information about the selected city.
- Updated map asset handling with utility functions for building asset URLs.
- Enhanced state management in mapViewer store to track selected city.
- Improved responsiveness and styling of map components.
- Added new API endpoint for loading map layouts from legacy data.
This commit is contained in:
2026-01-16 17:32:45 +00:00
parent 5af2799662
commit 3ea81e4532
13 changed files with 1019 additions and 90 deletions
@@ -4,6 +4,7 @@ interface MapViewerState {
showCityName: boolean;
detailMode: boolean;
hoveredCityId: number | null;
selectedCityId: number | null;
}
export const useMapViewerStore = defineStore('mapViewer', {
@@ -11,6 +12,7 @@ export const useMapViewerStore = defineStore('mapViewer', {
showCityName: true,
detailMode: false,
hoveredCityId: null,
selectedCityId: null,
}),
actions: {
toggleCityName() {
@@ -22,5 +24,8 @@ export const useMapViewerStore = defineStore('mapViewer', {
setHoveredCity(cityId: number | null) {
this.hoveredCityId = cityId;
},
setSelectedCity(cityId: number | null) {
this.selectedCityId = cityId;
},
},
});