LouisMazel / vue2-leaflet-movingmarker

MovingMarker plugin extension for vue2-leaflet package
https://louismazel.github.io/vue2-leaflet-movingmarker/
MIT License
24 stars 14 forks source link

Add l-moving-marker component as a plugin in nuxt #4

Open pcm0nk opened 4 years ago

pcm0nk commented 4 years ago

What I did is I installed it then added import LMovingMarker from 'vue2-leaflet-movingmarker' to my leaflef plugin in nuxt plugins folder and addingVue.component('l-moving-marker', LMovingMarker); at the end , but when leaflet map opens it throws this error Unknown custom element: <l-moving-marker> -did you register the component correctly? For recursive components, make sure to provide the "name" option.

// leafletmap plugin.js for nuxt
import Vue from 'vue';
import {LMap, LTileLayer, LMarker , LIconDefault, LPopup} from 'vue2-leaflet';
import {VGeosearch} from 'vue2-leaflet-geosearch';
import LMovingMarker from 'vue2-leaflet-movingmarker'
import L from 'leaflet';
delete L.Icon.Default.prototype._getIconUrl;

L.Icon.Default.mergeOptions({
  iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'),
  iconUrl: require('leaflet/dist/images/marker-icon.png'),
  shadowUrl: require('leaflet/dist/images/marker-shadow.png')
})

Vue.component('l-map', LMap);
Vue.component('l-tilelayer', LTileLayer);
Vue.component('l-marker', LMarker);
Vue.component('l-popup', LPopup);
Vue.component('l-icon-default', LIconDefault);
Vue.component('v-geosearch', VGeosearch);
Vue.component('l-moving-marker', LMovingMarker);

Thanks for any help

Stuffa1991 commented 4 years ago

Mine looks as following with nuxt

// plugins/vue-leaflet.js
import Vue from 'vue';

import {LMap, LTileLayer, LMarker, LControl, LTooltip, LIcon} from 'vue2-leaflet';
import { Icon } from 'leaflet';
import 'leaflet/dist/leaflet.css';

const VueLeaflet = {
  install(Vue, options) {
    Vue.component('l-map', LMap);
    Vue.component('l-marker', LMarker);
    Vue.component('l-tile-layer', LTileLayer);
    Vue.component('l-control', LControl);
    Vue.component('l-tooltip', LTooltip);
    Vue.component('l-icon', LIcon);
  }
};

Vue.use(VueLeaflet);

delete Icon.Default.prototype._getIconUrl;
Icon.Default.mergeOptions({
  iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'),
  iconUrl: require('leaflet/dist/images/marker-icon.png'),
  shadowUrl: require('leaflet/dist/images/marker-shadow.png'),
});

export default VueLeaflet;
// plugins/vue-leaflet-moving-marker.js
import Vue from 'vue';

import LMovingMarker from 'vue2-leaflet-movingmarker';

const VueLeafletMovingMarker = {
  install(Vue, options) {
    Vue.component('l-moving-marker', LMovingMarker);
  }
};

Vue.use(VueLeafletMovingMarker);

export default VueLeafletMovingMarker;
// nuxt.config.js
...
plugins: [
    {src: '~/plugins/vue-leaflet', ssr: false},
    {src: '~/plugins/vue-leaflet-moving-marker', ssr:false},
  ]
...

However the moving marker seems to have an issue with tooltips, i can't make them show.

Version 0.0.1 works fine, but the new 1.0.0 doesn't not sure if its some overlapping dependencies but the error im getting could indicate it.

// Error on 1.0.0 for popup
Uncaught TypeError: Failed to execute 'appendChild' on 'Node': parameter 1 is not of type 'Node'.
    at NewClass._updateContent (webpack-internal:///./node_modules/leaflet/dist/leaflet-src.js:9660)
    at NewClass.update (webpack-internal:///./node_modules/leaflet/dist/leaflet-src.js:9571)
    at NewClass.onAdd (webpack-internal:///./node_modules/leaflet/dist/leaflet-src.js:9508)
    at NewClass.onAdd (webpack-internal:///./node_modules/leaflet/dist/leaflet-src.js:9794)
    at NewClass._layerAdd (webpack-internal:///./node_modules/leaflet/dist/leaflet-src.js:6616)
    at NewClass.whenReady (webpack-internal:///./node_modules/leaflet/dist/leaflet-src.js:4476)
    at NewClass.addLayer (webpack-internal:///./node_modules/leaflet/dist/leaflet-src.js:6678)
    at NewClass.openPopup (webpack-internal:///./node_modules/leaflet/dist/leaflet-src.js:10018)
    at NewClass.openPopup (webpack-internal:///./node_modules/vue2-leaflet-movingmarker/dist/vue2-leaflet-movingmarker.common.js:11581)
    at NewClass._openPopup (webpack-internal:///./node_modules/vue2-leaflet-movingmarker/dist/vue2-leaflet-movingmarker.common.js:11656)
// Error on tooltip 1.0.0

leaflet-src.js?e11e:9661 Uncaught TypeError: Failed to execute 'appendChild' on 'Node': parameter 1 is not of type 'Node'.
    at NewClass._updateContent (leaflet-src.js?e11e:9661)
    at NewClass.update (leaflet-src.js?e11e:9572)
    at NewClass.onAdd (leaflet-src.js?e11e:9509)
    at NewClass.onAdd (leaflet-src.js?e11e:10257)
    at NewClass._layerAdd (leaflet-src.js?e11e:6617)
    at NewClass.whenReady (leaflet-src.js?e11e:4477)
    at NewClass.addLayer (leaflet-src.js?e11e:6679)
    at NewClass.openTooltip (leaflet-src.js?e11e:10407)
    at NewClass.openTooltip (vue2-leaflet-movingmarker.common.js?529a:11979)
    at NewClass._openTooltip (vue2-leaflet-movingmarker.common.js?529a:12045)