Skip to content

OpenLayers Example

Learn how to use Terra Draw with OpenLayers using the same drawing API.

Installation

npm install ol terra-draw terra-draw-openlayers-adapter

OpenLayers Implementation

import Map from 'ol/Map';
import View from 'ol/View';
import TileLayer from 'ol/layer/Tile';
import OSM from 'ol/source/OSM';
import { fromLonLat } from 'ol/proj';

import { TerraDraw } from 'terra-draw';
import { TerraDrawOpenLayersAdapter } from 'terra-draw-openlayers-adapter';
import {
    TerraDrawPointMode,
    TerraDrawLineStringMode,
    TerraDrawPolygonMode,
    TerraDrawSelectMode
} from 'terra-draw';

// Initialize OpenLayers map
const map = new Map({
    target: 'map',
    layers: [
        new TileLayer({
            source: new OSM()
        })
    ],
    view: new View({
        center: fromLonLat([174.7645, -36.8485]),
        zoom: 10
    })
});

// Create Terra Draw instance with OpenLayers adapter
const draw = new TerraDraw({
    adapter: new TerraDrawOpenLayersAdapter({ map }),
    modes: [
        new TerraDrawPointMode(),
        new TerraDrawLineStringMode(), 
        new TerraDrawPolygonMode(),
        new TerraDrawSelectMode()
    ]
});

// Start Terra Draw
draw.start();

Key Differences

  • Map setup - Uses OpenLayers Map, View, and Layer classes
  • Coordinate system - Uses fromLonLat() for coordinate transformation
  • Adapter - Uses TerraDrawOpenLayersAdapter
  • Drawing logic - Identical Terra Draw code!

Next: Universal Component