New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

anymap-ts

Package Overview
Dependencies
Maintainers
1
Versions
21
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

anymap-ts

TypeScript frontend for anymap-ts interactive maps

latest
Source
npmnpm
Version
0.15.2
Version published
Weekly downloads
177
51.28%
Maintainers
1
Weekly downloads
 
Created
Source

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

LibraryDescriptionUse Case
MapLibre GL JSOpen-source vector mapsDefault, general-purpose mapping
Mapbox GL JSCommercial vector mapsAdvanced styling, 3D terrain
LeafletLightweight, mobile-friendlySimple maps, broad compatibility
OpenLayersFeature-rich, enterpriseWMS/WMTS, projections
DeckGLGPU-acceleratedLarge-scale data visualization
Cesium3D globe3D Tiles, terrain, global views
KeplerGLData explorationInteractive data analysis
PotreePoint cloudsLiDAR 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

VariableLibraryDescription
MAPBOX_TOKENMapbox, KeplerGLMapbox access token
CESIUM_TOKENCesiumCesium Ion access token

API Reference

Map Classes

ClassBase LibraryKey Features
Map / MapLibreMapMapLibre GL JSVector tiles, drawing, layer control
MapboxMapMapbox GL JS3D terrain, Mapbox styles
LeafletMapLeafletLightweight, plugins
OpenLayersMapOpenLayersWMS/WMTS, projections
DeckGLMapDeckGL + MapLibreGPU layers, aggregations
CesiumMapCesium3D globe, terrain, 3D Tiles
KeplerGLMapKeplerGLData exploration UI
PotreeViewerPotreePoint cloud visualization

Common Methods

MethodDescription
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

MethodDescription
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

MethodDescription
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

MethodDescription
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

Keywords

maplibre

FAQs

Package last updated on 01 Apr 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts