11from __future__ import annotations
22
33from enum import Enum
4- from typing import Union
4+ from typing import Optional , Union
55
66from pydantic import ConfigDict , Field , computed_field
77
@@ -35,7 +35,8 @@ class GeoJSONSource(Source):
3535 Examples:
3636 >>> from maplibre.sources import GeoJSONSource
3737
38- >>> source = GeoJSONSource(data="https://docs.mapbox.com/mapbox-gl-js/assets/earthquakes.geojson")
38+ >>> geojson = "https://docs.mapbox.com/mapbox-gl-js/assets/earthquakes.geojson"
39+ >>> source = GeoJSONSource(data=geojson)
3940 """
4041
4142 data : Union [str , dict ]
@@ -64,7 +65,8 @@ class RasterTileSource(Source):
6465
6566 Examples:
6667 >>> from maplibre.sources import RasterTileSource
67- >>> raster_source = RasterTileSource(
68+
69+ >>> raster_tile_source = RasterTileSource(
6870 ... tiles=["https://tile.openstreetmap.org/{z}/{x}/{y}.png"],
6971 ... tile_size=256,
7072 ... min_zoom=0,
@@ -86,3 +88,40 @@ class RasterTileSource(Source):
8688 @property
8789 def type (self ) -> str :
8890 return SourceType .RASTER .value
91+
92+
93+ class VectorTileSource (Source ):
94+ """Vector tile source
95+
96+ Examples:
97+ >>> from maplibre.sources import VectorTileSource
98+ >>> from maplibre import LayerType, Layer
99+
100+ >>> vector_tile_source = VectorTileSource(
101+ ... tiles=["https://demotiles.maplibre.org/tiles/{z}/{x}/{y}.pbf"],
102+ ... min_zoom=0,
103+ ... max_zoom=6,
104+ ... )
105+
106+ >>> layer = Layer(
107+ ... type=LayerType.LINE,
108+ ... id="countries",
109+ ... source=vector_tile_source,
110+ ... source_layer="countries",
111+ ... paint={"fill-color": "lightgreen", "fill-outline-color": "black"},
112+ ... )
113+ """
114+
115+ attribution : str = None
116+ bounds : tuple = None
117+ max_zoom : int = Field (None , serialization_alias = "maxzoom" )
118+ min_zoom : int = Field (None , serialization_alias = "minzoom" )
119+ scheme : str = None
120+ tiles : Union [tuple , list ] = None
121+ url : str = None
122+ volatile : bool = None
123+
124+ @computed_field
125+ @property
126+ def type (self ) -> str :
127+ return SourceType .VECTOR .value
0 commit comments