nuxt-mapbox
Version:
Elegant Mapbox GL JS integration with Nuxt
26 lines (25 loc) • 1.35 kB
JavaScript
import { useState } from "#app";
import { default as mapboxgl } from "mapbox-gl";
import "mapbox-gl/dist/mapbox-gl.css";
import { useRuntimeConfig } from "#imports";
export function initMapbox() {
if (import.meta.server) return;
const init = useState("mapbox_init", () => false);
if (init.value) return;
init.value = true;
const runtimeConfig = useRuntimeConfig();
mapboxgl.accessToken = runtimeConfig.public.mapbox.accessToken;
if (runtimeConfig.public.mapbox.baseApiUrl) mapboxgl.baseApiUrl = runtimeConfig.public.mapbox.baseApiUrl;
if (runtimeConfig.public.mapbox.workerUrl) mapboxgl.workerUrl = runtimeConfig.public.mapbox.workerUrl;
if (runtimeConfig.public.mapbox.workerCount) mapboxgl.workerCount = runtimeConfig.public.mapbox.workerCount;
if (runtimeConfig.public.mapbox.prewarm) mapboxgl.prewarm();
if (runtimeConfig.public.mapbox.RTLTextPlugin) {
const defaultPlugin = "https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-rtl-text/v0.2.3/mapbox-gl-rtl-text.js";
if (typeof runtimeConfig.public.mapbox.RTLTextPlugin === "boolean") runtimeConfig.public.mapbox.RTLTextPlugin = {
pluginURL: defaultPlugin,
lazy: false
};
mapboxgl.setRTLTextPlugin(runtimeConfig.public.mapbox.RTLTextPlugin.pluginURL || defaultPlugin, () => {
}, runtimeConfig.public.mapbox.RTLTextPlugin.lazy || false);
}
}