Skip to content

Commit b1b1dbf

Browse files
committed
Add 'none' tile provider
1 parent eee26e7 commit b1b1dbf

File tree

2 files changed

+17
-5
lines changed

2 files changed

+17
-5
lines changed

staticmaps/svg_renderer.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,7 @@ def render_marker_object(self, marker: Marker) -> None:
8585

8686
def render_image_marker_object(self, marker: ImageMarker) -> None:
8787
group = self._draw.g(clip_path="url(#page)")
88-
image_data = marker.image_data()
89-
image_type = self.guess_image_mime_type(image_data)
90-
image = f"data:{image_type};base64,{base64.b64encode(image_data).decode('utf-8')}"
88+
image = SvgRenderer.create_inline_image(marker.image_data())
9189
x, y = self._trans.ll2pixel(marker.latlng())
9290
x_count = math.ceil(self._trans.image_width() / (2 * self._trans.world_width()))
9391
for p in range(-x_count, x_count + 1):
@@ -163,8 +161,7 @@ def fetch_tile(
163161
image_data = download(self._trans.zoom(), x, y)
164162
if image_data is None:
165163
return None
166-
image_type = self.guess_image_mime_type(image_data)
167-
return f"data:{image_type};base64,{base64.b64encode(image_data).decode('utf-8')}"
164+
return SvgRenderer.create_inline_image(image_data)
168165

169166
@staticmethod
170167
def guess_image_mime_type(data: bytes) -> str:
@@ -173,3 +170,8 @@ def guess_image_mime_type(data: bytes) -> str:
173170
if data[1:4] == b"PNG":
174171
return "image/png"
175172
return "image/png"
173+
174+
@staticmethod
175+
def create_inline_image(image_data: bytes) -> str:
176+
image_type = SvgRenderer.guess_image_mime_type(image_data)
177+
return f"data:{image_type};base64,{base64.b64encode(image_data).decode('utf-8')}"

staticmaps/tile_provider.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ def max_zoom(self) -> int:
3939
return self._max_zoom
4040

4141
def url(self, zoom: int, x: int, y: int) -> typing.Optional[str]:
42+
if len(self._url_pattern.template) == 0:
43+
return None
4244
if (zoom < 0) or (zoom > self._max_zoom):
4345
return None
4446
shard = None
@@ -79,9 +81,17 @@ def url(self, zoom: int, x: int, y: int) -> typing.Optional[str]:
7981
max_zoom=24,
8082
)
8183

84+
tile_provider_None = TileProvider(
85+
"none",
86+
url_pattern="",
87+
attribution=None,
88+
max_zoom=99,
89+
)
90+
8291
default_tile_providers = {
8392
tile_provider_OSM.name(): tile_provider_OSM,
8493
tile_provider_StamenTerrain.name(): tile_provider_StamenTerrain,
8594
tile_provider_StamenToner.name(): tile_provider_StamenToner,
8695
tile_provider_ArcGISWorldImagery.name(): tile_provider_ArcGISWorldImagery,
96+
tile_provider_None.name(): tile_provider_None,
8797
}

0 commit comments

Comments
 (0)