如何从另一个Vue组件触发Mapbox事件?

时间:2020-10-06 00:10:28

标签: javascript vue.js mapbox-gl-js

我正在尝试将地图网站移至Vue。

该网站使用普通JS工作,可从公共API提取JSON并构建1)带有卡片列表的侧边栏和2)地图。

在Vue中,很明显,我将这两个部分分成了不同的组件,就像这样:

<template>
  <div>
    <CardsList :cards-data="this.info" />
    <Map :cards-data="this.info"  />
  </div>
</template>

由于仅在Map组件中初始化Mapbox,所以我很难在Cards List中获得一些事件处理程序,因为它们应该与Map交互。它的内容看起来异常复杂。

我在做什么错?应该在App.vue上初始化地图,并且侧边栏是唯一的组件吗?像map.getLayer这样的Mapbox GL JS表达式在组件上可用吗?

1 个答案:

答案 0 :(得分:1)

我通常使用的模式是使用EventBus

您可以看到此here的示例。