Examples
Basic Usage
import { GeoZoom } from '@fxi/d3-geo-zoom';
import { select } from 'd3-selection';
import { geoOrthographic, geoPath } from 'd3-geo';
// Create SVG element
const svg = select('#map')
  .append('svg')
  .attr('width', 800)
  .attr('height', 600);
// Setup projection
const projection = geoOrthographic()
  .scale(250)
  .translate([400, 300]);
// Create path generator
const path = geoPath()
  .projection(projection);
// Initialize and configure zoom behavior
const zoom = new GeoZoom(svg.node());
zoom
  .setProjection(projection)
  .setNorthUp(true)
  .onMove(() => {
    // Update map on zoom/pan
    svg.selectAll('path').attr('d', path);
  });
            API Reference
new GeoZoom(element)
Creates a new GeoZoom instance for the provided DOM element (typically an SVG element).
Methods
setProjection(projection)- Sets the D3 geographic projection to userotateTo(rotation)- Smoothly rotates to specified [lambda, phi, gamma] anglesmove(direction, step)- Moves in specified direction ('left', 'right', 'up', 'down', 'north')reset()- Resets zoom and rotation to initial statesetNorthUp(enabled)- Enables/disables north-up constraintsetScaleExtent([min, max])- Sets allowed scale rangesetTransitionDuration(duration)- Sets duration for smooth transitionsonMove(callback)- Sets callback for projection changesgetZoom()- Gets the underlying D3 zoom behavior
Callback Parameters
The onMove callback receives an object with:
scale- Current projection scalerotation- Current rotation as [lambda, phi, gamma]