53 lines
1.5 KiB
Python
53 lines
1.5 KiB
Python
from typing import Any
|
|
|
|
import dearpygui.dearpygui as _dpg
|
|
|
|
import dpg_map as dpgm
|
|
|
|
dpg: Any = _dpg
|
|
|
|
|
|
def main() -> None:
|
|
dpgm.configure(user_agent="dpg-map custom_provider example")
|
|
provider = dpgm.TileProvider(
|
|
name="carto-light",
|
|
url_template="https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}{r}.png",
|
|
subdomains=("a", "b", "c", "d"),
|
|
attribution="(c) OpenStreetMap contributors (c) CARTO",
|
|
file_extension="png",
|
|
)
|
|
if "carto-light" not in dpgm.list_providers():
|
|
dpgm.register_provider(provider)
|
|
|
|
dpg.create_context()
|
|
dpg.create_viewport(title="dpg-map custom provider", width=900, height=600)
|
|
|
|
def use_osm() -> None:
|
|
dpgm.set_provider("osm", map_tag="custom-provider-map")
|
|
|
|
def use_carto() -> None:
|
|
dpgm.set_provider("carto-light", map_tag="custom-provider-map")
|
|
|
|
with dpg.window(label="Custom Provider", width=-1, height=-1):
|
|
with dpg.group(horizontal=True):
|
|
dpg.add_button(label="OSM", callback=use_osm)
|
|
dpg.add_button(label="Carto", callback=use_carto)
|
|
with dpgm.map_widget(
|
|
tag="custom-provider-map",
|
|
provider="carto-light",
|
|
center=(47.9029, 1.9093),
|
|
zoom=13,
|
|
width=-1,
|
|
height=-1,
|
|
):
|
|
dpgm.add_marker("orleans", lat=47.9029, lon=1.9093, label="Orleans")
|
|
|
|
dpg.setup_dearpygui()
|
|
dpg.show_viewport()
|
|
dpg.start_dearpygui()
|
|
dpg.destroy_context()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|