[英]Using Mapbox GL JS in Vue after initialization
我的Map.vue
在下面,部分代码被缩写,所以我不公开任何信息。 地图是我的应用程序的一个组件,我想向它添加一些交互。 但是,我的method
不起作用,说read property 'getPitch' of undefined
。 如何初始化地图,以便以后仍可以使用 Mapbox 的功能?
<template>
<div id="map" class="map">
<button @click="getPitch">Test</button>
</div>
</template>
<script>
import mapboxgl from 'mapbox-gl';
export default {
name: "Map",
data() {
return {
};
},
props: {
mapdata: {
type: Object,
default: () => { return {}; }
}
},
beforeUpdate() {
mapboxgl.accessToken = "...";
const map = new mapboxgl.Map({
container: "map",
style: "...",
center: ...,
zoom: 11.85,
});
let mapRecords = this.mapdata.data;
map.once('styledata', function() {
map.addSource('...', {
...
});
map.addLayer({
...
})
});
},
methods: {
getPitch() {
map.getPitch();
}
}
};
</script>
<style scoped>
...
</style>
解决了
首先,将beforeUpdate()
所有map
实例更改为this.map
。 然后,在getPitch
函数中,添加这一行: let map = this.map;
.
beforeUpdate
看起来不像是正确的钩子。 您可能应该使用mounted
。
此外,您的变量map
超出了您的getPitch
方法的范围。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.