Comments (8)
It's not that simple. It's generally bad idea to add to Vuex or component's data
anything but primitive types and plain objects. Vue adds getters and setters to every property and it may break Map
object (for example if getters/setters already used for some purpose).
If you want to store map object, store it as non-reactive in component or just add to $store object, like so:
in component:
export default {
// …component code…
created() {
this.map = null
},
methods: {
onMapLoaded(event) {
// in component
this.map = event.map
// or just to store if you want have access from other components
this.$store.map = event.map
}
}
}
from vue-mapbox.
In case this will help anyone, this solved my issues with multiple maps in one app, and their broken style:
geoMapLoaded(map) { let self = this; map._isVue = true; self.setEntityGeolocationMap(map); self.getEntityGeolocationMap.resize(); },
Actually setting isVue to true solved this map._isVue = true;
from vue-mapbox.
This issue was solved by not keeping the map object in a vuex store
I tried both options, still same issues if tiles aren't satellite
Ref: #111 (comment)
from vue-mapbox.
Actually setting isVue to true solved this
map._isVue = true;
It solved the issue on my side. My component has vuex-mapped properties, although this.map
is not. But maybe vuex was messing with it anyway?
edit: actually, as stated in vuejs/vue#2637 (comment)
- If you need to skip observation for an object/array in data, use Object.freeze() on it;
- You don't need to put an object in data in order to access it on this. If you simply attach it to this in the created() hook, it doesn't get observed at all.
Declaring the property solely in the created()
lifecycle method fixed the glitch.
from vue-mapbox.
I made some progress with this, seems that it's somehow related to vuex. I can use the map normally until I commit the map object to the vuex state. Then everything goes haywire, like in the video above. I've disabled everything that the app does with the map once it's in the state store. I can't for the life of me figure out why just adding the map object to the state store would cause this problem
from vue-mapbox.
Hi,
Thank you, yes, that explains it. I'm using typescript, so I can't just extend the $store in that way, but I created a shared service the store and components can share, and it works great. Closing-
from vue-mapbox.
@chriszrc Can you share a repro link? I'm facing a similar issue.
from vue-mapbox.
from vue-mapbox.
Related Issues (20)
- Provide a minimum and complete sample of MglGeojsonLayer HOT 1
- Listening on maps events HOT 2
- Bounds prop does not work HOT 1
- MglCanvasLayer not working?
- How to change map languages with using Mapbox GL Language Plugin? HOT 1
- Map layers do not render again past initial load HOT 2
- Way to fire marker click OR map click HOT 1
- Legend not working when full screen HOT 2
- Expose raw MapboxGl object HOT 1
- gridsome build issue
- Setting a layout on addLayer is ignored
- Compatibilitywith Vue3? HOT 1
- Marker placement issue with multiple custom icons
- Is there a possibility to use this without a map? HOT 5
- API -> popup -> events
- New release needed HOT 1
- Zoom issue HOT 3
- Optimize bundle size
- TypeError: Cannot use 'in' operator to search for 'ref' in point HOT 2
- this.$listeners removed in Vue 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from vue-mapbox.