Skip to content

ol-source-tile-wms

Source for WMS servers providing tiled images.

Usage

vue
<template>
  <form>
    <fieldset>
      <label for="opacity-slider">Layer Opacity</label>
      <input
        type="range"
        id="opacity-slider"
        min="0"
        max="1"
        step="0.1"
        v-model.number="layerOpacity"
      />
      <span class="description">{{ layerOpacity }}</span>
    </fieldset>
    <fieldset>
      <label for="visibility-toggle">Layer Visibility:</label>
      <input type="checkbox" id="visibility-toggle" v-model="layerVisible" />
      <span> {{ layerVisible ? "Visible" : "Hidden" }}</span>
    </fieldset>
  </form>
  <ol-map
    :loadTilesWhileAnimating="true"
    :loadTilesWhileInteracting="true"
    style="height: 400px"
  >
    <ol-view ref="view" :center="center" :zoom="zoom" />
    <ol-zoom-control />

    <ol-tile-layer :zIndex="1000">
      <ol-source-osm />
    </ol-tile-layer>

    <ol-tile-layer
      :zIndex="1001"
      :opacity="layerOpacity"
      :visible="layerVisible"
    >
      <ol-source-tile-wms
        url="https://ahocevar.com/geoserver/wms"
        :extent="[-13884991, 2870341, -7455066, 6338219]"
        layers="topp:states"
        serverType="geoserver"
        :transition="0"
        :params="{}"
      />
    </ol-tile-layer>
  </ol-map>
</template>

<script setup lang="ts">
import { ref } from "vue";

const zoom = ref(4);
const center = ref([-10997148, 4569099]);
const layerOpacity = ref(0.4);
const layerVisible = ref(true);
</script>

Properties

Props from OpenLayers

Properties are passed-trough from OpenLayers directly. Their types and default values can be checked-out in the official OpenLayers docs. Only some properties deviate caused by reserved keywords from Vue / HTML. This deviating props are described in the section below.

Deviating Properties

The following additional properties are available for setting specific params.

layers

Sets / overrides the params.LAYERS property.

  • Type: string | unknown[]

styles

Sets / overrides the params.STYLES property.

  • Type: string | unknown[]

Events

You have access to all Events from the underlying source. Check out the official OpenLayers docs to see the available events tht will be fired.

html
<ol-source-tile-wms :url="imgUrl" @error="handleEvent" />

Methods

You have access to all Methods from the underlying source. Check out the official OpenLayers docs to see the available methods.

To access the source, you can use a ref() as shown below:

vue
<template>
  <!-- ... -->
  <ol-source-tile-wms :url="url" ref="sourceRef" />
  <!-- ... -->
</template>

<script setup lang="ts">
import { ref, onMounted } from "vue";
import type TileWMS from "ol/source/TileWMS";

const sourceRef = ref<{ source: TileWMS }>(null);

onMounted(() => {
  const source: TileWMS = sourceRef.value?.source;
  // call your method on `source`
});
</script>