Layer-Like Objects#
The ipyleaflet.Map.add() method supports
“layer-like” objects; meaning any object with an as_leaflet_layer method.
This interface can be especially useful for downstream developers who want
their users to more easily be able to add their objects to an
ipyleaflet.Map.
Example#
Downstream objects should implement an as_leaflet_layer method that returns
an ipyleaflet type capable of being added to the Map.
Here is a simple example of creating a custom data class to hold heatmap data (coordinates with some numerical value).
import numpy as np
class MyHeatMap:
def __init__(self, points, values, radius=20):
self.points = points
self.values = values
self.radius = radius
@property
def data(self):
return np.column_stack((self.points, self.values))
def as_leaflet_layer(self):
from ipyleaflet import Heatmap
return Heatmap(
locations=self.data.tolist(),
radius=self.radius,
)
We can now use that custom data class and because it has an
as_leaflet_layer interface, we can pass the object directly to
ipyleaflet.Map.add().
from ipyleaflet import Map
n = 1000
data = MyHeatMap(
np.random.uniform(-80, 80, (n, 2)),
np.random.uniform(0, 1000, n),
)
m = Map(center=(0, 0), zoom=2)
m.add(data)
m
External Examples#
The following external libraries are working to implement this new interface
localtileserver: a dynamic tile server built for visualizing large geospatial images/rasters with ipyleaflet.
xarray-leaflet: an xarray extension for tiled map plotting, based on ipyleaflet.