building_selection_tool/map_view_simple_example.py

52 lines
1.6 KiB
Python

import tkinter
import tkintermapview
select_buildings = False
selected_coordinates = []
def marker_click(marker):
print(f"marker clicked - text: {marker.text} position: {marker.position}")
def on_click(coordinates_tuple):
if select_buildings:
print(coordinates_tuple)
selected_coordinates.append(coordinates_tuple)
def activate_selection_box():
select_buildings = True
# create tkinter window
root_tk = tkinter.Tk()
root_tk.geometry(f"{1000}x{700}")
root_tk.title("Building Selection Tool")
# create left frame
leftframe = tkinter.Frame(root_tk)
leftframe.pack(side=tkinter.LEFT)
# create right frame
rightframe = tkinter.Frame(root_tk,width=80)
rightframe.pack(side=tkinter.RIGHT)
# create button for activating building selection
selection_box_button = tkinter.Button(leftframe, text="Create Selection Box", command=activate_selection_box)
selection_box_button.pack(side=tkinter.TOP)
# create text box for viewing selecting coordinates
text_width = tkinter.Text(leftframe,height=50,width=30)
text_width.pack(side=tkinter.BOTTOM,padx=50)
# create map widget
map_widget = tkintermapview.TkinterMapView(rightframe, width=1000, height=700, corner_radius=0)
map_widget.pack(fill="both", expand=True)
# set other tile server (standard is OpenStreetMap)
map_widget.set_tile_server("https://mt0.google.com/vt/lyrs=m&hl=en&x={x}&y={y}&z={z}&s=Ga", max_zoom=14) # google normal
# set current position and zoom
map_widget.set_position(45.497059, -73.578451, marker=False) # Montreal, Quebec
map_widget.set_zoom(11)
map_widget.add_left_click_map_command(on_click)
root_tk.mainloop()