We build and maintain @geoql/v-maplibre, the Vue 3 components that wrap maplibre-gl. Import VMap, drop a `:options` prop, and get a fully reactive map with zero refs.
pnpm add @geoql/v-maplibre maplibre-gl<script setup lang="ts">
import { VMap, VControlScale, VControlNavigation } from '@geoql/v-maplibre';
import 'maplibre-gl/dist/maplibre-gl.css';
import '@geoql/v-maplibre/dist/v-maplibre.css';
import type { MapOptions } from 'maplibre-gl';
const MAP_STYLE = 'https://maps.guru/api/v1/styles/standard/light/style.json?key=YOUR_API_KEY';
const options: MapOptions = {
style: MAP_STYLE,
center: [77.209, 28.6139],
zoom: 11,
hash: true,
};
</script>
<template>
<VMap :options="options" class="map-canvas" @loaded="onMapReady">
<VControlNavigation position="top-right" />
<VControlScale position="bottom-left" />
</VMap>
</template>
<style>
.map-canvas { width: 100%; height: 480px; }
</style>
Free-tier generous enough for real production traffic. 50,000 tile requests/month , no credit card.
The wrapper handles cleanup, ref forwarding, and slot composition for you. You get the full maplibre-gl API surface but stay inside Vue idioms.
Yes, it is MIT licensed and open source. We build it because we use it on maps.guru itself, and we ship our customers faster with it.
The vocabulary behind vector tiles, styles, and geocoding, in plain language.
Join developers worldwide who trust maps.guru for their mapping needs. Start free, no credit card required.