我的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>
解决了
首先,将所有map实例更改beforeUpdate()为this.map. 然后,在getPitch函数中,添加了这一行:let map = this.map;。
慕码人2483693
相关分类