npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

anymap-ts

v0.15.1

Published

TypeScript frontend for anymap-ts interactive maps

Downloads

1,151

Readme

anymap-ts

A Python package for creating interactive maps with anywidget using TypeScript. Supports multiple mapping libraries including MapLibre GL JS, Mapbox GL JS, Leaflet, OpenLayers, DeckGL, Cesium, KeplerGL, and Potree.

image notebook-link image image image Conda Downloads Conda Recipe npm version image

Supported Libraries

| Library | Description | Use Case | |---------|-------------|----------| | MapLibre GL JS | Open-source vector maps | Default, general-purpose mapping | | Mapbox GL JS | Commercial vector maps | Advanced styling, 3D terrain | | Leaflet | Lightweight, mobile-friendly | Simple maps, broad compatibility | | OpenLayers | Feature-rich, enterprise | WMS/WMTS, projections | | DeckGL | GPU-accelerated | Large-scale data visualization | | Cesium | 3D globe | 3D Tiles, terrain, global views | | KeplerGL | Data exploration | Interactive data analysis | | Potree | Point clouds | LiDAR visualization |

Features

  • Interactive maps in Jupyter notebooks
  • Bidirectional Python-JavaScript communication via anywidget
  • Drawing and geometry editing with maplibre-gl-geo-editor
  • Layer control with maplibre-gl-layer-control
  • Multiple basemap providers via xyzservices
  • Export to standalone HTML
  • TypeScript-based frontend for type safety and maintainability

Installation

From PyPI (when published)

pip install anymap-ts

From conda-forge

conda install -c conda-forge anymap-ts

From source (development)

git clone https://github.com/opengeos/anymap-ts.git
cd anymap-ts
pip install -e ".[dev]"

Optional dependencies

# For vector data support (GeoDataFrame)
pip install anymap-ts[vector]

# For local raster support (localtileserver)
pip install anymap-ts[raster]

# All optional dependencies
pip install anymap-ts[all]

Quick Start

MapLibre GL JS (Default)

from anymap_ts import Map

# Create a map centered on a location
m = Map(center=[-122.4, 37.8], zoom=10)
m.add_basemap("OpenStreetMap")
m.add_draw_control()
m

Mapbox GL JS

import os
from anymap_ts import MapboxMap

# Set your Mapbox token (or use MAPBOX_TOKEN env var)
m = MapboxMap(center=[-122.4, 37.8], zoom=10)
m.add_basemap("OpenStreetMap")
m

Leaflet

from anymap_ts import LeafletMap

m = LeafletMap(center=[-122.4, 37.8], zoom=10)
m.add_basemap("OpenStreetMap")
m.add_marker(-122.4194, 37.7749, popup="San Francisco")
m

OpenLayers

from anymap_ts import OpenLayersMap

m = OpenLayersMap(center=[-122.4, 37.8], zoom=10)
m.add_basemap("OpenStreetMap")

# Add WMS layer
m.add_wms_layer(
    url="https://example.com/wms",
    layers="layer_name",
    name="WMS Layer"
)
m

DeckGL

from anymap_ts import DeckGLMap

m = DeckGLMap(center=[-122.4, 37.8], zoom=10)
m.add_basemap("CartoDB.DarkMatter")

# Add scatterplot layer
points = [{"coordinates": [-122.4, 37.8], "value": 100}]
m.add_scatterplot_layer(data=points, get_radius=100)

# Add hexagon aggregation
m.add_hexagon_layer(data=points, radius=500, extruded=True)
m

Cesium (3D Globe)

from anymap_ts import CesiumMap

# Set CESIUM_TOKEN env var for terrain/3D Tiles
m = CesiumMap(center=[-122.4, 37.8], zoom=10)
m.add_basemap("OpenStreetMap")
m.set_terrain()  # Enable Cesium World Terrain
m.fly_to(-122.4194, 37.7749, height=50000, heading=45, pitch=-45)
m

KeplerGL

from anymap_ts import KeplerGLMap
import pandas as pd

m = KeplerGLMap(center=[-122.4, 37.8], zoom=10)

# Add DataFrame data
df = pd.DataFrame({
    'latitude': [37.7749, 37.8044],
    'longitude': [-122.4194, -122.2712],
    'value': [100, 200]
})
m.add_data(df, name='points')
m

Potree (Point Clouds)

from anymap_ts import PotreeViewer

viewer = PotreeViewer(
    point_budget=1000000,
    edl_enabled=True
)
viewer.load_point_cloud("path/to/pointcloud/cloud.js", name="lidar")
viewer

Common Features

Add Vector Data

geojson = {
    "type": "FeatureCollection",
    "features": [
        {
            "type": "Feature",
            "geometry": {"type": "Point", "coordinates": [-122.4, 37.8]},
            "properties": {"name": "San Francisco"}
        }
    ]
}

# Works with MapLibre, Mapbox, Leaflet, OpenLayers
m.add_vector(geojson, name="points")

# Or with GeoDataFrame (requires geopandas)
import geopandas as gpd
gdf = gpd.read_file("path/to/data.geojson")
m.add_vector(gdf, name="polygons")

Map Navigation

# Fly to location with animation
m.fly_to(-122.4, 37.8, zoom=14)

# Fit to bounds [west, south, east, north]
m.fit_bounds([-123, 37, -122, 38])

Export to HTML

# All map types support HTML export
m.to_html("map.html", title="My Map")

Environment Variables

| Variable | Library | Description | |----------|---------|-------------| | MAPBOX_TOKEN | Mapbox, KeplerGL | Mapbox access token | | CESIUM_TOKEN | Cesium | Cesium Ion access token |

API Reference

Map Classes

| Class | Base Library | Key Features | |-------|--------------|--------------| | Map / MapLibreMap | MapLibre GL JS | Vector tiles, drawing, layer control | | MapboxMap | Mapbox GL JS | 3D terrain, Mapbox styles | | LeafletMap | Leaflet | Lightweight, plugins | | OpenLayersMap | OpenLayers | WMS/WMTS, projections | | DeckGLMap | DeckGL + MapLibre | GPU layers, aggregations | | CesiumMap | Cesium | 3D globe, terrain, 3D Tiles | | KeplerGLMap | KeplerGL | Data exploration UI | | PotreeViewer | Potree | Point cloud visualization |

Common Methods

| Method | Description | |--------|-------------| | add_basemap(name) | Add a basemap layer | | add_vector(data, name) | Add vector data (GeoJSON/GeoDataFrame) | | add_geojson(data, name) | Add GeoJSON data | | add_tile_layer(url, name) | Add XYZ tile layer | | fly_to(lng, lat, zoom) | Fly to location | | fit_bounds(bounds) | Fit map to bounds | | set_visibility(layer, visible) | Set layer visibility | | set_opacity(layer, opacity) | Set layer opacity | | to_html(filepath) | Export to HTML |

DeckGL-Specific Layers

| Method | Description | |--------|-------------| | add_scatterplot_layer() | Point visualization | | add_arc_layer() | Origin-destination arcs | | add_path_layer() | Polylines | | add_polygon_layer() | Polygons | | add_hexagon_layer() | Hexbin aggregation | | add_heatmap_layer() | Density heatmap | | add_grid_layer() | Grid aggregation | | add_geojson_layer() | GeoJSON rendering |

Cesium-Specific Methods

| Method | Description | |--------|-------------| | set_terrain() | Enable terrain | | add_3d_tileset(url) | Add 3D Tiles | | add_imagery_layer(url) | Add imagery | | set_camera(lng, lat, height) | Set camera position |

Potree-Specific Methods

| Method | Description | |--------|-------------| | load_point_cloud(url) | Load point cloud | | set_point_budget(budget) | Set max points | | add_measurement_tool(type) | Add measurement | | add_annotation(position, title) | Add annotation |

Examples

See the examples/ folder for Jupyter notebooks demonstrating each library:

  • maplibre.ipynb - MapLibre GL JS basics
  • mapbox.ipynb - Mapbox GL JS with terrain
  • leaflet.ipynb - Leaflet markers and GeoJSON
  • openlayers.ipynb - OpenLayers and WMS
  • deckgl.ipynb - DeckGL visualization layers
  • cesium.ipynb - Cesium 3D globe
  • keplergl.ipynb - KeplerGL data exploration
  • potree.ipynb - Potree point clouds

Development

Prerequisites

  • Python 3.10+
  • Node.js 18+
  • npm

Setup

git clone https://github.com/opengeos/anymap-ts.git
cd anymap-ts
pip install -e ".[dev]"
npm install --legacy-peer-deps

Build

# Build all libraries
npm run build:all

# Build specific library
npm run build:maplibre
npm run build:mapbox
npm run build:leaflet
npm run build:deckgl
npm run build:openlayers
npm run build:cesium

# Watch mode
npm run watch

Project Structure

anymap-ts/
├── src/                    # TypeScript source
│   ├── core/               # Base classes
│   ├── maplibre/           # MapLibre implementation
│   ├── mapbox/             # Mapbox implementation
│   ├── leaflet/            # Leaflet implementation
│   ├── openlayers/         # OpenLayers implementation
│   ├── deckgl/             # DeckGL implementation
│   ├── cesium/             # Cesium implementation
│   └── types/              # Type definitions
├── anymap_ts/              # Python package
│   ├── maplibre.py         # MapLibreMap class
│   ├── mapbox.py           # MapboxMap class
│   ├── leaflet.py          # LeafletMap class
│   ├── openlayers.py       # OpenLayersMap class
│   ├── deckgl.py           # DeckGLMap class
│   ├── cesium.py           # CesiumMap class
│   ├── keplergl.py         # KeplerGLMap class
│   ├── potree.py           # PotreeViewer class
│   ├── static/             # Built JS/CSS
│   └── templates/          # HTML export templates
└── examples/               # Example notebooks

License

MIT License - see LICENSE for details.

Credits