Web map Vue 3.x components with the power of OpenLayers

Overview

vue3-openlayers

Web map Vue components with the power of OpenLayers

Netlify Status NPM version Downloads Github Issiues GitHub forks GitHub Stars


Overview

vue3-openlayers is components library that brings the powerful OpenLayers API to the Vue3 reactive world. It can display maps with tiled, raster or vector layers loaded from different sources.

Links

Requirements

Alt Text

Install

# install Vue
npm install vue

# install current vue3-openlayers version 
npm install vue3-openlayers

License

MIT (c) Melih Altıntaş

Comments
  • ol-layerswitcherimage-control Implement Groups to separate base layers from vector layer + user options prop

    ol-layerswitcherimage-control Implement Groups to separate base layers from vector layer + user options prop

    ol-layerswitcherimage-control is frustrating base layers should be displayed as radio to only have one selected at a time by default From doc this is normally done by putting type='base' on the layer

    We also need a user object to define custom groups

    Describe the solution you'd like props on the component

    bug enhancement 
    opened by signmeuptwice 9
  • Accessing a clicked feature's original object

    Accessing a clicked feature's original object

    Sorry about the cross-posting from Stackoverflow, but nobody is answering there.

    I have a Vue 3 Composition API component using Vue Open Layers, iterating through an object array property on the component and creating a feature for each object. When a feature is selected, I want to access the original object's information, in this case, the name. How can I do this? Right now all I get access to is the array of coordinates which the feature was created from.

        <ol-map :loadTilesWhileAnimating="true" :loadTilesWhileInteracting="true" style="height:90vh; width: 80vw;" ref="map">
    
          <ol-view ref="view" :center="center" :rotation="rotation" :zoom="zoom" :projection="projection"/>
    
          <ol-tile-layer>
            <ol-source-osm />
          </ol-tile-layer>
          <ol-interaction-select @select="featureSelected" :condition="selectCondition" >
            <ol-style>
              <ol-style-stroke color="red" :width="10"></ol-style-stroke>
              <ol-style-fill color="rgba(255,255,255,0.5)"></ol-style-fill>
            </ol-style>
          </ol-interaction-select>
    
          <ol-geolocation :projection="projection" @positionChanged="geoLocChange">
            <template v-slot="slotProps">
              <ol-vector-layer :zIndex="0">
                <ol-source-vector>
                  <ol-feature ref="positionFeature">
                    <ol-geom-point :coordinates="slotProps.position"></ol-geom-point>
                    <ol-style>
                      <ol-style-icon :src="hereIcon" :scale="0.1"></ol-style-icon>
                    </ol-style>
                  </ol-feature>
                  <ol-feature v-for="(contract, index) in contracts" :key="index" >
                    <ol-geom-polygon :coordinates="[contract.location]"></ol-geom-polygon>
                    <ol-style>
                      <ol-style-stroke color="green" :width="5"></ol-style-stroke>
                    </ol-style>
                  </ol-feature>
                </ol-source-vector>
    
              </ol-vector-layer>
            </template>
          </ol-geolocation>
        </ol-map>
    
    ...
    
    export default defineComponent({
      name: 'IndexPage',
      setup() {
        const contracts = [
          {
            name: "Tel Aviv traffic jams",
            location: [[34.742580, 32.046081],[34.760053,32.135796],[34.817236,32.127726],[34.783349,32.031719]]
          }
        ]
        const selectConditions = inject('ol-selectconditions')
    
        const selectCondition = selectConditions.click;
        const selectedContract = ref(false);
    
    
        const clickedFeature = (event) => {
          console.log(event);
        }
    
    
    opened by boriskogan81 8
  • How to Save/Recover/Program/Add/Delete Features ?

    How to Save/Recover/Program/Add/Delete Features ?

    Not really a bug but I need advice from the developpers because I am completely lost on the logic behind how to deal with feature states

    the doc is not clear; at least for me.

    I have this template

     <ol-interaction-select @select="featureSelected" :condition="selectCondition" :features="selectedFeatures">
        <ol-style>
          <ol-style-stroke :color="'red'" :width="2"></ol-style-stroke>
          <ol-style-fill :color="`rgba(255, 0, 0, 0.4)`"></ol-style-fill>
        </ol-style>
      </ol-interaction-select>
    <ol-source-vector :projection="projection">
       <ol-interaction-modify v-if="modifyEnabled" :features="selectedFeatures" @modifyend="modifyend"></ol-interaction-modify>
       <ol-interaction-draw v-if="drawEnable" :type="drawType" @drawend="drawend"></ol-interaction-draw>
    </ol-source-vector>
    

    and the logic:

    import {Collection} from "ol"
    setup(){
           const selectedFeatures = ref(new Collection())
           let newFeatures = ref([])
    
           const drawend = (event) => {
              newFeatures.value.push({type:event.target.type_, coordinates:event.target.sketchCoords_})
              modifyEnabled.value = true
              drawEnable.value = false
              emit()
           }
           const modifyend = (event) => {
               // how to know which feature I am editing and how to get the new value ?
               emit()
            }
            function featureSelected(event) {
              const feature = event.target.getFeatures()
              selectedFeatures.value = event.target.getFeatures()
              if(feature.array_ && feature.array_.length) {
                 let coordinates = null
                 if(feature.array_[0].values_.geometries && feature.array_[0].values_.geometries.length) {
                   coordinates = feature.array_[0].values_.geometries[0].flatCoordinates
                 } else if(feature.array_[0].values_.geometry) {
                   coordinates = feature.array_[0].values_.geometry.flatCoordinates
                 }
                console.log(coordinates)
            }
        }
    }
    

    when I select I get the new coordinates with featureSelected but that seems cumbersome because I have to dig down into the object and there is no real relation between what I am editing and my data because newFeatures is not being updated.

    selectedFeatures and newFeatures have different types so I need to translate one to the other and vice versa ?

    Ideally everything should be sharing a single reactive value/format somewhere between the collection and the modified one but they are not linked/bridged ?? Ideally I would just like to put newFeatures in the modify component but I need to track selectedFeature instead and then copy values back to my newFeatures ?

    In newFeatures I have a collection of simple data that has no reference to the dom like [{type:'Point',coordinates:[3,2,5]}] in selectedFeatures I have a complex object so How am I supposed to keep references between both objects?

    so I can get new values from console.log(coordinates) but what am I supposed to do with these ? How do I update my newFeatures array? is there no simple feature getter and setters ?

    Clearly there must be something I am missing because I can't even extract feature type like LineString, circle, etc... from the modify event object.

    in featureSelected I need to do selectedFeatures.value = event.target.getFeatures() and in drawend I have to do selectedFeatures.value.push(event.feature). What is the reason ?

    or I could do without newFeatures if there is a way to get all current features from ol-interaction-draw component for export? but in which format to store in database so I can re-edit them later ?

    Could you clarify for me? Sorry but I have been on this for 2 days now.

    Full code https://gist.github.com/signmeuptwice/c45085e64e09828bc6f3bc81635fdb9e

    help wanted 
    opened by signmeuptwice 8
  • [Error] Unhandled Promise Rejection: TypeError: null is not an object (evaluating 'currentRenderingInstance.isCE')

    [Error] Unhandled Promise Rejection: TypeError: null is not an object (evaluating 'currentRenderingInstance.isCE')

    Describe the bug Copying the ol-map sample fires this error

    [Error] Unhandled Promise Rejection: TypeError: null is not an object (evaluating 'currentRenderingInstance.isCE')
    	logError (runtime-core.esm-bundler.js:6664)
    	handleError (runtime-core.esm-bundler.js:305)
    	callWithErrorHandling (runtime-core.esm-bundler.js:259)
    	flushJobs (runtime-core.esm-bundler.js:483)
    	promiseReactionJob
    

    To Reproduce Steps to reproduce the behavior:

    1. clone my sample repository https://github.com/eltorio/hello-openlayers.git
    2. yarn install && yarn serve
    3. goes to http://127.0.0.1:8080/
    4. See error

    Expected behavior Display a full width map and height 400px

    package.json

    {
      "name": "hello-openlayers",
      "version": "0.1.0",
      "private": true,
      "scripts": {
        "serve": "vue-cli-service serve",
        "build": "vue-cli-service build",
        "lint": "vue-cli-service lint"
      },
      "dependencies": {
        "@fortawesome/fontawesome-free": "5.15.3",
        "@popperjs/core": "2.9.1",
        "@tailwindcss/forms": "0.2.1",
        "@vue/compiler-sfc": "3.0.7",
        "chart.js": "2.9.4",
        "core-js": "3.9.1",
        "gulp": "4.0.2",
        "gulp-append-prepend": "1.0.8",
        "tailwindcss": "2.0.4",
        "vue": "3.0.7",
        "vue-router": "4.0.5",
        "vue3-openlayers": "^0.1.55"
      },
      "devDependencies": {
        "@babel/core": "7.13.10",
        "@babel/eslint-parser": "7.13.10",
        "@vue/cli-plugin-babel": "5.0.0-alpha.7",
        "@vue/cli-plugin-eslint": "5.0.0-alpha.7",
        "@vue/cli-service": "5.0.0-alpha.7",
        "autoprefixer": "10.2.5",
        "eslint": "7.22.0",
        "eslint-plugin-vue": "7.7.0",
        "postcss": "8.2.8",
        "vue-template-compiler": "2.6.12"
      },
      "eslintConfig": {
        "root": true,
        "env": {
          "node": true
        },
        "extends": [
          "plugin:vue/essential",
          "eslint:recommended"
        ],
        "rules": {},
        "parserOptions": {
          "parser": "@babel/eslint-parser"
        }
      },
      "postcss": {
        "plugins": {
          "autoprefixer": {}
        }
      },
      "browserslist": [
        "> 1%",
        "last 2 versions"
      ]
    }
    
    

    **Vue **

    <template>
    <ol-map :loadTilesWhileAnimating="true" :loadTilesWhileInteracting="true" style="height:400px">
    
        <ol-view ref="view" :center="center" :rotation="rotation" :zoom="zoom" 
        :projection="projection" />
    
        <ol-tile-layer>
            <ol-source-osm />
        </ol-tile-layer>
        
    </ol-map>
    </template>
    <script>
    import {
        ref
    } from 'vue'
    export default {
        setup() {
            const center = ref([40, 40])
            const projection = ref('EPSG:4326')
            const zoom = ref(8)
            const rotation = ref(0)
            return {
                center,
                projection,
                zoom,
                rotation
            }
        },
    }
    </script>
    

    main.js

    import { createApp } from "vue";
    import { createWebHistory, createRouter } from "vue-router";
    
    // styles
    
    import "@fortawesome/fontawesome-free/css/all.min.css";
    import "@/assets/styles/tailwind.css";
    
    // mouting point for the whole app
    
    import App from "@/App.vue";
    
    //vue3 openlayers
    import OpenLayersMap from 'vue3-openlayers';
    import 'vue3-openlayers/dist/vue3-openlayers.css';
    import Test from "@/views/OpenLayers.vue";
    
    // routes
    
    const routes = [
      {
        path: "/",
        component: Test,
      },
      { path: "/:pathMatch(.*)*", redirect: "/" },
    ];
    
    const router = createRouter({
      history: createWebHistory(),
      routes,
    });
    
    const app = createApp(App);
    
    app.use(router);
    app.use(OpenLayersMap);
    app.mount("#app");
    
    opened by eltorio 6
  • Delete Geometries After Draw Or Any Other Geometries

    Delete Geometries After Draw Or Any Other Geometries

    When implement ol-interaction-draw how i can add feature to user delete the selected shape , i'm try from ol-interaction-clusterselect get the featureSelected event and if have a function to delete the current element or something like that or please if have some other way.

    Thank you.

    opened by ibrahim-developper 6
  • Flowline or multicolor multi-line-string ? (display elevation)

    Flowline or multicolor multi-line-string ? (display elevation)

    I cannot see in the doc an example of a multicolor linestring

    the closest I fount is the multi-line-string so I tried this

          <ol-feature v-if="waypoints && waypoints.length > 0">
            <ol-geom-multi-line-string :coordinates="waypoints"></ol-geom-multi-line-string>
            <ol-style :overrideStyleFunction="overrideStyleFunction">
              <ol-style-stroke color="green" :width="7"></ol-style-stroke>
            </ol-style>
          </ol-feature>
    

    problem is that my overrideStyleFunction is only triggered once and the line is the same color everywhere not sure what I am doing wrong

    OL has Flowline which could be great to have as a component ?

    enhancement 
    opened by signmeuptwice 6
  • ol-layerswitcherimage-control has extra non existent layer and all layers are selected by default

    ol-layerswitcherimage-control has extra non existent layer and all layers are selected by default

    I could not find any documentation on this. If I missed it all my apologies for a useless post

    I see that the demo has the exact same behavior; Did you forget props in demo ?

    using the <ol-layerswitcherimage-control >

    I have an extra layer with image data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAEAAAABA … eJLjLwPul3vj5d0eAAAAAElFTkSuQmCC

    then by default all my layers are selected; this is a big performance issue

    Can you please let me know how to control this component ?

    opened by signmeuptwice 5
  • WIP: Typescript types declarations

    WIP: Typescript types declarations

    Added basic typescript declaration for the module.

    Description

    • Created typescript declaration file
    • Added declarations that declare return values of the inject method provided by the plugin.

    Motivation and Context

    When using a module with typescript there are some types missing and can be declared.

    How Has This Been Tested?

    Created new Nuxt 3 plugin, with next code:

    import OpenLayersMap from 'vue3-openlayers'
    import 'vue3-openlayers/dist/vue3-openlayers.css'
    
    export default defineNuxtPlugin((nuxtApp) => {
      nuxtApp.vueApp.use(OpenLayersMap)
    })
    

    Then created a component with example code:

    export default {
      setup() {
        const center = ref([34, 39.13])
        const projection = ref('EPSG:4326')
        const zoom = ref(6)
        const rotation = ref(0)
    
        const format = inject('ol-format');
    
        const geoJson = new format.GeoJSON();
       ...
    

    Without the types declarations, the type of format is unknown. With the declarations, the types properly resolved to the ol types.

    Types of Changes

    • [ ] Bugfix: Typescript types declarations
    opened by R3VoLuT1OneR 4
  • Usage in a component render function

    Usage in a component render function

    Hi,

    I would like to render the "ol-map" (and its children components) using the h() function. Something like:

    h(Map, {
        class: 'q-mt-md',
        loadTilesWhileAnimating: true,
        loadTilesWhileInteracting: true,
        style: 'height:400px'
      }, [ 
          h(View, {
              center: [0, 45],
              rotation: 0,
              zoom: 8,
              projection: 'EPSG:4326'
          }),
          h(FullScreenControl),
          h(TileLayer, null, [ h(SourceOSM) ])
      ])
    

    What is the appropriate import directive that I could use to get access to the component definitions Map, View, FullScreenControl, TileLayer etc. ?

    Thanks

    opened by ymarcon 4
  • [Warning] No map visible because the map container's width or height are 0

    [Warning] No map visible because the map container's width or height are 0

    from doc example, inserting the following component

    <ol-overviewmap-control><ol-tile-layer><ol-source-osm /></ol-tile-layer></ol-overviewmap-control>

    gives error

    [Warning] No map visible because the map container's width or height are 0.

    I imported

    import 'vue3-openlayers/dist/vue3-openlayers.css'

    tested in my project and with fresh project from latest source

    bug 
    opened by signmeuptwice 4
  • Hit Tolerance in interaction-select

    Hit Tolerance in interaction-select

    Hello,

    I'm probably not doing something right, but I cannot use :hit-tolerance="xx" on the select interaction.

    Could anybody point me in the right direction?

    Thank you!

    opened by aocneanu 3
  • Use the ol-ext library

    Use the ol-ext library

    I need to use the ol-ext library, what would be the recommendations to add these features. I am currently trying to add a pie chart.

    I would like the components to be implemented with ol-ext

    opened by PabMai 0
  • removeCondition support in SelectInteraction

    removeCondition support in SelectInteraction

    This MR adds support for removeCondition:

    A function that takes an MapBrowserEvent and returns a boolean to indicate whether that event should be handled. By default, this is never. Use this if you want to use different events for add and remove instead of toggle.

    (from ol docs)

    Motivation and Context

    It's a useful feature when interacting specific feature for which the select interaction should not be allowed

    How Has This Been Tested?

    Was not tested.

    Screenshots (if appropriate):

    Types of Changes

    • [ ] Bug fix (non-breaking change that fixes an issue)
    • [x] New feature (non-breaking change that adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)

    Checklist:

    • [x] My code follows the code style of this project.
    • [x] My change requires a change to the documentation.
    • [ ] I have updated the documentation accordingly. -> I would but I'm not sure how to
    opened by aocneanu 0
  • coordinate  -6.2651623,107.0999022 NOT WORK

    coordinate -6.2651623,107.0999022 NOT WORK

    i have a problem, i want to make a marker to the location coordinates-6.2651623,107.0999022 but it seems the marker is not really there. and even out of the map what causes and solutions how script Vue 3

    
    <script setup>
      const center = ref([40, 40])
            const projection = ref('EPSG:4326')
            const zoom = ref(8)
            const rotation = ref(0)
            const radius = ref(40)
            const strokeWidth = ref(10)
            const strokeColor = ref('red')
            const fillColor = ref('white')
            const coordinate = ref([-6.2651623,107.0999022])
    </script>
    

    my template vue

    	<ol-map :loadTilesWhileAnimating="true" :loadTilesWhileInteracting="true" style="height:400px">
    
        <ol-view ref="view" :center="center" :rotation="rotation" :zoom="zoom" :projection="projection" />
    
        <ol-tile-layer>
            <ol-source-osm />
        </ol-tile-layer>
    
        <ol-vector-layer>
            <ol-source-vector>
                <ol-feature>
                    <ol-geom-point :coordinates="coordinate"></ol-geom-point>
                    <ol-style>
                        <ol-style-circle :radius="radius">
                            <ol-style-fill :color="fillColor"></ol-style-fill>
                            <ol-style-stroke :color="strokeColor" :width="strokeWidth"></ol-style-stroke>
                        </ol-style-circle>
                    </ol-style>
                </ol-feature>
    
            </ol-source-vector>
    
        </ol-vector-layer>
    
    </ol-map>
    
    opened by bobwatcherx 0
  • Visible prop of ol-tile-layer is not reactive - controls initial visibility only

    Visible prop of ol-tile-layer is not reactive - controls initial visibility only

    Describe the bug The prop visible of ol-tile-layer controls the visibility of a layer only on initial loading.

    To Reproduce

    1. Create template with ol-tile-layer
    
    <template>
        <ol-map
          ref="olMap"
          :load-tiles-while-animating="true"
          :load-tiles-while-interacting="true"
          style="height: 100%"
        >
          <ol-view
            ref="view"
            :center="center"
            :rotation="rotation"
            :zoom="zoom"
            :projection="projection"
            @zoomChanged="zoomChanged"
            @centerChanged="centerChanged"
          />
    
          <ol-tile-layer ref="osmlayer" title="OpenstreetMap" :visible="osmVisible">
            <ol-source-osm />
          </ol-tile-layer>
    
      </ol-map>
    </template>
    <script>
    import "vue3-openlayers/dist/vue3-openlayers.css";
    
    export default {
      name: "MapView",
      props: {
        center: {
          type: Array,
          required: true,
        },
        zoom: {
          type: Number,
          required: true,
        },
        extent: {
          type: Array,
          required: true,
        },
      },
      data() {
        return {
          rotation: 0,
          projection: "EPSG:3857",
          osmVisible: true
         },
      },
      methods: {
    }
    };
    </script>
    

    Expected behavior The prop visible of ol-tile-layer controls the visibility of a layer every time the property is changing.

    Desktop (please complete the following information):

    • OS: Ubuntu 20.04 LTS
    • Browser Chrome 107.0.5304.87 (64-Bit), Firefox 107.0 (64-bit)
    opened by gc-sommer 0
  • view reference null after remounting my component

    view reference null after remounting my component

    hi,

    first of all, very nice vue implementation.

    ok, I am using ref to the view, when I open the component I can use viewRef.value.setZoom() to set the zoom from an external UI. when I close the component and open it wirh a new map, the refView is null! inside the map everything is fine.

    how should i unmount the view?

    <div class="map-container">
        <!-- @created="onMapCreated()"  @click="zoomIn()"-->
        <ol-map :loadTilesWhileAnimating="true" :loadTilesWhileInteracting="true" style="height:980px" >
            <!-- :extent="extentCalc()" -->
            <ol-view ref="viewRef" :center="center" :rotation="rotation" :zoom="zoom" :maxZoom="maxZoom" :minZoom="minZoom" :projection="projection" :extent="extent" :showFullExtent="true" :smoothResolutionConstraint="true" @zoomChanged="onZoomChanged"  @resolutionChanged="onResolutionChanged"/>
            <!-- <ol-zoom-control /> -->
            <!-- <ol-attribution-control/> -->
    
            <ol-overlay :position="position">
                <template v-slot="slotProps">
                <!-- <template> -->
                    <div class="marker" :xxx="slotProps"></div>
                    <!-- <div class="overlay-content">
                        Hello world!<br>
                        Position: {{ slotProps.position}}
                    </div> -->
                </template>
            </ol-overlay>
    
            <ol-image-layer>
                <!-- :attributions="imgCopyright" :imageExtent="extent"  -->
                <ol-source-image-static :url="imgUrl" :imageSize="size" :imageExtent="imageExtent" :projection="projection"></ol-source-image-static>
            </ol-image-layer>
    
        </ol-map>
    
    </div>
    
    opened by bluelemonade 1
Releases(v0.1.66)
Geolocation field & map block: All you need for a map on your website

Geolocation field & map block: All you need for a map on your website

Microman 24 Jan 1, 2023
A quick way to start a web map application with Vue.js using MapLibre GL JS.

Vue.js map using MapLibre GL JS A quick way to start a web map application with Vue.js using MapLibre GL JS. A simple fullscreen map application is us

MapTiler 10 Sep 14, 2022
Baidu Map components for Vue 2.x

VUE BAIDU MAP Baidu Map components for Vue 2.x Languages 中文 English Documentation https://dafrok.github.io/vue-baidu-map Get Start Installation npm i

马金花儿 2.3k Jan 5, 2023
A set of Vue.js components to display an interactive SVG map

vue-svg-map A set of Vue.js components to display an interactive SVG map. Demo Take a look at the live demo! Installation npm npm install --save vue-s

Victor Cazanave 80 Dec 18, 2022
Choropleth Map component for Vue.js

vue-choropleth Vue components to display a choropleth map given a certain GeoJSON and another datasource to show information from. Using Vue2Leaflet H

Guillermo Peralta Scura 117 Oct 24, 2022
vue google map custom marker component

vue2-gmap-custom-marker This component allows you to display custom HTML content on the map using Overlay. This component is an adaptation of the Goog

eric regnier 130 Sep 14, 2022
New Sayobot Map Downloader Written by [email protected], [email protected], [email protected]

SayoDownloader This software only provide in Chinese! 一个全新设计的小夜地图下载器

null 8 Oct 15, 2022
A Vue JS component for displaying dynamic data on a world map.

This is no longer being maintained, please do not open issues or PRs. Vue World Map A Vue JS Component for displaying dynamic data on a world map. Map

Gerard Burns 40 Nov 17, 2022
Directus-extension-svgmap-picker-interface - Select a value from a SVG Map box, built using vue.js

This extension is under development, it may take breaking changes. SVG Map Picke

Adrian Dimitrov 16 Jan 4, 2023
EV Charge Map is an application to search for all the EV charge points for your journey. Made with Quasar/Vue

EV Charge Map is an application to search for all the EV charge points for your journey. Made with Quasar/Vue

null 9 Dec 31, 2022
Vue with Typescript and Google Map

CONTRIBUTORS NEEDED! My projects at work have also gradually migrated away from Google Maps (but still on Vue -- Vue's awesome!), so there's less and

An Nguyen Van 8 Oct 16, 2021
a simple component to generate an static google map

vue-static-map a simple component to generate an static google map Google Documentation Demo SandBox JSBin example Requirements Vue 2.X.X Usage Instal

Eduardo P. Rivero 23 Nov 24, 2022
A simple map & geolocation field, built on top of open-source services and Mapbox. Kirby 3 only.

Kirby Locator A simple map & geolocation field, built on top of open-source services and Mapbox. Overview This plugin is completely free and published

Sylvain Julé 87 Dec 9, 2022
This component allows you to display custom HTML content on the map using Overlay

vue3-gmap-custom-marker This component allows you to display custom HTML content on the map using Overlay. This component is an update (a fork) from e

eric regnier 3 Apr 1, 2022
Kartobuilder - a php package for the laravel framework that works with the inertia jetstream stack to build your own map

Kartobuilder is a php package for the laravel framework that works with the inertia jetstream stack to build your own map.

Franck Colonna 3 Sep 23, 2022
🗺 Map Module for Nuxt 3

@nuxtjs/map Map module for Nuxt ✨ Release Notes ?? Read the documentation Features Nuxt 3 ready Easy integration with Google Maps & Leaflet Use only t

Nuxt Modules 7 Nov 18, 2022
🗺 Vue Mapbox GL - A small components library to use Mapbox GL in Vue

?? Vue Mapbox GL A small components library to use Mapbox GL in Vue. Installation & usage Have a look at the small guide for information on how to set

Studio Meta 48 Dec 18, 2022
Vue 2 components for Leaflet maps

Vue2Leaflet Vue2Leaflet is a JavaScript library for the Vue framework that wraps Leaflet making it easy to create reactive maps. How to install npm in

Vue Leaflet 1.9k Dec 29, 2022
Vue 2.x components for CesiumJS.

VUE CESIUM Vue 2.x components for CesiumJS. Load Cesium built package or other third-party packages which are built on Cesium. Languages 中文 English Li

zouyaoji 920 Jan 6, 2023