Skip to content

Commit dcf5cd4

Browse files
committed
Add kml example
1 parent 330e1e5 commit dcf5cd4

File tree

6 files changed

+35
-16
lines changed

6 files changed

+35
-16
lines changed

examples/standalone/kml_layer.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# See https://openlayers.org/en/latest/examples/data/kml/2012-02-10.kml
2+
import openlayers as ol
3+
4+
from openlayers.models.formats import KML
5+
from openlayers.utils import crs_transformer
6+
7+
url = "https://openlayers.org/en/latest/examples/data/kml/2012-02-10.kml"
8+
9+
layer = ol.VectorLayer(
10+
source=ol.VectorSource(url=url,format=KML())
11+
)
12+
13+
center = crs_transformer().transform(876970.8463461736, 5859807.853963373)
14+
15+
m = ol.Map(ol.View(center=center, zoom=10))
16+
m.add_layer(layer)
17+
m.add_tooltip()
18+
m.save()

src/openlayers/map.py

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
from .models.sources import OSM
1313
from .models.view import View
1414
from .styles import FlatStyle
15-
from .utils import default_crs_transformer
1615

1716

1817
class Map(object):
@@ -79,19 +78,13 @@ def set_zoom(self, zoom_level: float | int) -> None:
7978
"""
8079
self.add_view_call("setZoom", zoom_level)
8180

82-
def set_center(
83-
self, lonlat: tuple[float, float] = None, transform: bool = True
84-
) -> None:
81+
def set_center(self, lonlat: tuple[float, float]) -> None:
8582
"""Set the center of the map view
8683
8784
Args:
8885
lonlat (tuple[float, float]): The centerpoint of the map as `(lon, lat)` pair
89-
transform (bool): Whether coordinates should be transformed to `EPSG:3857`,
90-
which is the default projection of the view
9186
"""
92-
# center = default_crs_transformer().transform(*lonlat) if transform else lonlat
93-
center = lonlat
94-
self.add_view_call("setCenter", center)
87+
self.add_view_call("setCenter", lonlat)
9588

9689
def add_layer(self, layer: LayerT | LayerLike | dict) -> None:
9790
"""Add a layer to the map

src/openlayers/models/formats.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from __future__ import annotations
22

3+
from typing import Union
34
from .core import OLBaseModel
45

56

@@ -9,3 +10,10 @@ class Format(OLBaseModel): ...
910

1011
# --- Formats
1112
class GeoJSON(Format): ...
13+
14+
15+
class KML(Format): ...
16+
17+
18+
# --- Format type
19+
FormatT = Union[Format, GeoJSON, KML]

src/openlayers/models/sources.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from pydantic import Field
44

55
from .core import OLBaseModel
6-
from .formats import GeoJSON
6+
from .formats import GeoJSON, FormatT
77

88
# from ..constants import CARTO_ATTRIBUTION
99

@@ -17,7 +17,7 @@ class VectorSource(Source):
1717
url: str | None = None
1818
# features: list[dict] | None = None
1919
geojson: dict | None = Field(None, serialization_alias="@@geojson")
20-
format: dict | GeoJSON = GeoJSON()
20+
format: FormatT | dict = GeoJSON()
2121

2222

2323
class OSM(Source): ...

src/openlayers/utils.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ def create_icon_src_from_file(filename: str) -> bytes:
1414
return f"data:image/{image_type};base64," + encoded_image
1515

1616

17-
def default_crs_transformer() -> Transformer:
18-
crs_from = CRS.from_epsg(4326)
19-
crs_to = CRS.from_epsg(3857)
17+
def crs_transformer(src_epsg=3857, dest_epsg=4326) -> Transformer:
18+
crs_from = CRS.from_epsg(src_epsg)
19+
crs_to = CRS.from_epsg(dest_epsg)
2020
return Transformer.from_crs(crs_from=crs_from, crs_to=crs_to, always_xy=True)

tests/test_utils.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
from openlayers.utils import default_crs_transformer
1+
from openlayers.utils import crs_transformer
22

33
def test_crs_transformer() -> None:
44
lon = -122.4
55
lat = 37.74
66

7-
transformer = default_crs_transformer()
7+
transformer = crs_transformer()
88
center = (lon, lat)
99
coords = transformer.transform(*center)
1010

0 commit comments

Comments
 (0)