Skip to content

MapboxImages

Add multiple images at once to be used used in icon-image, background-pattern, fill-pattern, and line-pattern. This component is a wrapper around the MapboxImage component.

Table of contents

Examples

Add multiple icons to the map

vue
<script setup>
  import { ref } from "vue";
  import { MapboxMap, MapboxImages, MapboxLayer } from '@studiometa/vue-mapbox-gl';

  const mapCenter = ref([0, 0]);

  const images = [
    {
      src: 'https://upload.wikimedia.org/wikipedia/commons/thumb/7/70/Dog_silhouette.svg/429px-Dog_silhouette.svg.png',
      id: 'dog',
    },
    {
      src: 'https://upload.wikimedia.org/wikipedia/commons/thumb/6/60/Cat_silhouette.svg/400px-Cat_silhouette.svg.png',
      id: 'cat',
    },
  ];

  const layerOptions = {
    type: 'symbol',
    source: {
      type: 'geojson',
      data: {
        type: 'FeatureCollection',
        features: [
          {
            type: 'Feature',
            properties: {
              icon: 'cat',
            },
            geometry: {
              type: 'Point',
              coordinates: [-25, 0],
            },
          },
          {
            type: 'Feature',
            properties: {
              icon: 'dog',
            },
            geometry: {
              type: 'Point',
              coordinates: [25, 0],
            },
          },
        ],
      },
    },
    layout: {
      'icon-image': ['get', 'icon'],
      'icon-size': 0.25,
    },
  };
</script>

<template>
  <MapboxMap
    style="height: 400px"
    :access-token="MAPBOX_API_KEY"
    map-style="mapbox://styles/mapbox/streets-v11"
    :center="mapCenter"
    :zoom="1">
    <MapboxImages :sources="images">
      <MapboxLayer id="pois" :options="layerOptions" />
    </MapboxImages>
  </MapboxMap>
</template>

Props

sources

  • Type Array
  • Required true

A list of images to add to the map.

source.id

  • Type String
  • Required true

The ID of the image. This will be used to refer to this image.

source.src

  • Type [ String, HTMLImageElement, ImageData, Object ]
  • Required true

The image as String, an HTMLImageElement, ImageData, or object with width, height, and data properties with the same format as ImageData.

source.options

  • Type Object
  • Default { pixelRatio: 1, sdf: false }

This options object will be passed directly to the addImage method.

Events

add

Emitted for each image being added to the map with the addImage method.

Properties

  • image (Object) The image's informations, directly passed from the add event of the `MapboxImage component
  • image.id (String) The ID given to the image
  • image.src (HTMLImageElement | ImageData | Object) The generated source of the image when the given source is a string; the given source otherwise
  • image.options (Object) The options object used with the addImage method
  • index (Number) The index of the image which has been added
  • total (Number) The total number of images to add

ready

Emitted when all images have been added to the map.

Properties

  • images (Array) An array containing all the added images' object emitted by the add event

Slots

default

The default slot will be rendered after the images have been added to the map — when the ready event is emitted.

Released under the GPL 3.0 License.