如何在 Vuex 中为 mapbox 地图设置集中状态? [英] How to setup a centralized state for a mapbox map in Vuex?

查看:22
本文介绍了如何在 Vuex 中为 mapbox 地图设置集中状态?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我刚开始在 vue 中使用 vuex.我确实(大致)了解文档.我有一个特定的问题,我不确定是否应该使用 vuex,如果是,该怎么做.

我有一个应用程序,其中 mapbox 地图在各种布局和组件等中无处不在.因为我将制作几个 vue 单文件组件,但正在使用 mapbox 地图的一个相同实例,我认为这是有意义的在 vuex 商店中启动和管理 mapbox 地图.所以例如当我更改地图布局或其他内容时,它将反映在所有组件中.

当我继续朝着这个方向前进时,我对一些事情感到困惑:

  1. 地图不仅仅是一个变量/数组,而是一个mapbox类地图的实例.所以我假设初始状态是一个空对象,然后需要对其进行初始化.正确吗?
  2. 初始化是异步的,我想只能在页面加载后发生.这可能就是我下面的代码不起作用的原因!?

我尝试了以下操作:

制作了一个mapboxmap模块,用

ma​​pboxmap.js

import simple from '../../components/simplestyle'让 mapboxgl = require('mapbox-gl/dist/mapbox-gl.js')//初始状态常量状态 = {我的地图:{},地图加载:假}常量突变 = {loadMap(状态,myMap){state.myMap = myMapstate.mapLoaded = true}}常量动作 = {加载映射(上下文){'使用严格'mapboxgl.accessToken = 'mysecretmapboxcode'让 myMap = new mapboxgl.Map({容器:'地图',风格:简单,哈希:真实,中心:[-74.0073, 40.7124],变焦:16})context.commit('loadMap', myMap)}}导出默认{状态,突变,行动}

作为组件:

Maplayout.vue