[英]Creating a Mapboxmap with SvelteKit results in 500 Internal Error
我试图用 mapbox 和 svelte 套件渲染一个基本的 map。 地图框代码直接来自此处的示例: https://docs.mapbox.com/help/tutorials/choropleth-studio-gl-pt-2/
我只想在src/lib/mapboxmap.svelte
-compontent 中创建这个 map,将其导入+page
-route 并渲染它。 但是我总是收到 500 内部错误。
我想我只是误解了一些东西。 可能是关于 svelte kit 的工作原理。 这是最小的mapboxmap.svelte
组件:
<script>
import mapboxgl from 'mapbox-gl';
import 'mapbox-gl/dist/mapbox-gl.css';
// define access token
mapboxgl.accessToken =
'pk.eyJ1Ijoicm9iaW5rb2hycyIsImEiOiJjanU5am95bm4xZnZ6NDNrOTRyYTYwdzJzIn0.iMFQgQIlhz36wB3819Xftw';
// create map
const map = new mapboxgl.Map({
container: 'map', // container id
style: 'mapbox://styles/examples/cjgioozof002u2sr5k7t14dim' // map style URL from Mapbox Studio
});
console.log('map: ', map);
</script>
然后我将它导入到他src/routes/+page.svelte
路由中,如下所示:
<script>
import Mapboxmap from '../lib/mapboxmap.svelte';
</script>
<Mapboxmap />
这是结果:
我认为这可能是一个愚蠢的问题,但我现在找不到解决方案
您需要在 onMount 块中移动 mapbox 初始化部分。 否则,此代码将在服务器端运行,而 mapbox 服务器不会喜欢它,加上 DOM 未初始化,容器“地图”尚不存在(更不用说您实际上必须将其插入 HTML 块中)。 类似的东西会起作用:
<script>
import {onMount} from 'svelte'
import mapboxgl from 'mapbox-gl';
import 'mapbox-gl/dist/mapbox-gl.css';
let map;
onMount(async()=>{
mapboxgl.accessToken =
'pk.eyJ1Ijoicm9iaW5rb2hycyIsImEiOiJjanU5am95bm4xZnZ6NDNrOTRyYTYwdzJzIn0.iMFQgQIlhz36wB3819Xftw';
// create map
map = new mapboxgl.Map({
container: 'map', // container id
style: 'mapbox://styles/examples/cjgioozof002u2sr5k7t14dim' // map style URL from Mapbox Studio
});
})
</script>
<div id="map">
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.