From 651c21b8ecb7626dbd5cb91948a74f7772133e4b Mon Sep 17 00:00:00 2001 From: Alexis <35.alexis.pele@gmail.com> Date: Sat, 14 Oct 2023 19:22:49 +0200 Subject: [PATCH] Added marker display when flown to marker And also refactored some event listeners --- src/components/maps/WorldMap.astro | 30 ++++++++++++++----- src/components/maps/overlay/SearchMarkers.vue | 19 +++++------- 2 files changed, 30 insertions(+), 19 deletions(-) diff --git a/src/components/maps/WorldMap.astro b/src/components/maps/WorldMap.astro index 620f3f59..68a13063 100644 --- a/src/components/maps/WorldMap.astro +++ b/src/components/maps/WorldMap.astro @@ -42,6 +42,8 @@ const layerGroups = { landmarks: L.layerGroup(), }; +const flyToDuration = 1.2; // In seconds + /** * Build all markers and their related info */ @@ -114,6 +116,16 @@ for (let i = 0; i < markers.length; i++) { } marker.addTo(layerGroups[m.group]) + + /** + * Display popup of marker + */ + document.addEventListener(`fly-to-${m.title}`, () => { + map.flyTo(coords, 5, { duration: flyToDuration }) + setTimeout(() => { + marker.openPopup() + }, flyToDuration * 1000) + }) } /** @@ -141,6 +153,16 @@ if ( players ) {
${players.description}
`; playerMarker.bindPopup(popupContent).openPopup(); + + /** + * Flying to players + */ + document.addEventListener('fly-to-players', () => { + map.flyTo(playersPosition, 5, { duration: flyToDuration }) + setTimeout(() => { + playerMarker.openPopup() + }, flyToDuration * 1000) + }) } map.fitBounds(layer.getBounds()); @@ -190,14 +212,6 @@ const rulerOptions = { const measureControl = L.control.measure(rulerOptions); measureControl.addTo(map); -/** - * Flying to points of interests - */ - document.addEventListener('fly-to', (e) => { - const targetCoords = e.detail - map.flyTo([targetCoords.y, targetCoords.x], 5) -}) - /** * DEBUGS */ diff --git a/src/components/maps/overlay/SearchMarkers.vue b/src/components/maps/overlay/SearchMarkers.vue index 5c210204..45e25c04 100644 --- a/src/components/maps/overlay/SearchMarkers.vue +++ b/src/components/maps/overlay/SearchMarkers.vue @@ -9,7 +9,7 @@ import { computed, onMounted, ref, onUpdated } from 'vue'; $world.listen(() => {}) await allTasks() -const { markers, players } = useStore($world).value +const { markers } = useStore($world).value // Search functions const qInput = ref() @@ -23,10 +23,10 @@ const shouldBeActive = computed(() => q.value.length > 0) const q = ref