v-mapbox icon indicating copy to clipboard operation
v-mapbox copied to clipboard

Issue with using Marker in Vue 3

Open UXandre opened this issue 2 years ago • 8 comments

Hi, first of all thank you for maintaining the amazing package. I managed to add the map in Vue 3 through composition API but have an issue when trying to add the marker.

This is the error I got

[Vue warn]: Missing required prop: "options" 
[Vue warn]: Missing required prop: "popupOptions" 
[Vue warn]: Unhandled error during execution of setup function 

When adding the marker, the whole component can't be resolved. Can't figure out why. I noticed there is a variation between the prop names used in the document and the ones actually used in the examples. Would it be the reason? If so, what prop names I should use for VMarker for vue 3?

Thank you!

<template>
    <v-map class="w-full h-full" :options="state.map">
       // The following line causes the issue.
        <v-marker :coordinates="coordinates" color="blue" />
    </v-map>
</template>

<script>
import { VMap, VMarker } from "v-mapbox";
import { reactive } from "vue";
import Mapbox from "mapbox-gl";

export default {
    components: {
        VMap,
        VMarker
    },
    setup() {
        const state = reactive({
            map: {
                accessToken:
                    "pk.eyJ1xxxxxxxxxxxxxxxfdsfasfsdfsadfasfdfdsfaketoken",
                center: [-0.0995, 51.5244],
                zoom: 11,
                maxZoom: 22,
                crossSourceCollisions: false,
                failIfMajorPerformanceCaveat: false,
                attributionControl: false,
                preserveDrawingBuffer: true,
                hash: false,
                minPitch: 0,
                maxPitch: 60
            }
        });

        const coordinates = [-0.0995, 51.5244];
        console.log(coordinates);

        return {
            state,
            coordinates
        };
    }
};
</script>

<style lang="scss">
@import "mapbox-gl/dist/mapbox-gl.css";
@import "v-mapbox/dist/v-mapbox.css";
</style>

Update

After digging into the errors, I've made a bit of progress. It seems like the color needs to be specified in the option prop. And the popupOption needs to be added too. This is a bit confusing to me as I would simply like to get it up and running with all the default setup. I had to pass an empty object like {} to the VMarker component to avoid the error. After I did so, my code became:

<template>
    <v-map class="w-full h-full" :options="state.map">
     
       <VMarker
            :coordinates="coordinates"
            :options="{ color: 'blue' }"
            :popupOptions="{}"
        />
    </v-map>
</template>

Now I get these errors:

[Vue warn]: Unhandled error during execution of setup function 
[Vue warn]: Unhandled error during execution of scheduler flush. This is likely a Vue internals bug

UXandre avatar May 03 '22 15:05 UXandre

Can you please create a repro ?

vinayakkulkarni avatar May 04 '22 14:05 vinayakkulkarni

@vinayakkulkarni sure. Here goes the codesandbox repro

Thank you!

UXandre avatar May 04 '22 19:05 UXandre

I have a similar problem with the marker, it requires :options (can't find anything about them in the docs), also when I add a random option eq: color, the map doesn't load, everything works fine until I try to add the VMarker.

manualy avatar May 08 '22 14:05 manualy

@vinayakkulkarni hope you had a wonderful weekend! Have you got a chance to look at the issue?

UXandre avatar May 09 '22 10:05 UXandre

@vinayakkulkarni hope you had a wonderful weekend! Have you got a chance to look at the issue?

Hey @UXandre, unfortunately I didn’t get a chance to review this last weekend but will take a look this week

vinayakkulkarni avatar May 09 '22 19:05 vinayakkulkarni

@vinayakkulkarni sounds good and thank you so much!

UXandre avatar May 10 '22 07:05 UXandre

https://codesandbox.io/s/v-mapbox-w-marker-s-om6yys

I forked this and set up v-mapbox w/ marker, I'll check the events as well

vinayakkulkarni avatar May 12 '22 08:05 vinayakkulkarni

@vinayakkulkarni thanks so much! By simply copy and pasting I managed to get the marker up and running. Will spend some time to digest the logic of the code later today. What events are you referring to?

UXandre avatar May 13 '22 08:05 UXandre