import tkinter import tkintermapview import json import copy with open('./data/collinear_clean.geojson', 'r') as city_file: city = json.load(city_file) buildings = city['features'] building_polygons = [] for building in buildings: building_polygon = [] if building['geometry']['type'] == 'Polygon': for coordinate in building['geometry']['coordinates'][0]: building_polygon.append((coordinate[1], coordinate[0])) building_polygons.append({'id': building['id'], 'polygon': copy.deepcopy(building_polygon)}) # create tkinter window root_tk = tkinter.Tk() root_tk.geometry(f"{1000}x{700}") root_tk.title("Building Selection Tool") # create map widget map_widget = tkintermapview.TkinterMapView(root_tk, 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=22) # google normal # map_widget.set_tile_server("https://mt0.google.com/vt/lyrs=s&hl=en&x={x}&y={y}&z={z}&s=Ga", max_zoom=22) # google satellite # set current position and zoom map_widget.set_position(45.497059, -73.578451, marker=False) # Montreal, Quebec map_widget.set_zoom(11) # set current position with address # map_widget.set_address("Berlin Germany", marker=False) def marker_click(marker): print(f"marker clicked - text: {marker.text} position: {marker.position}") building_polygon_markers = [] count = 0 for building_polygon in building_polygons: if count > 1000: break building_polygon_markers.append(map_widget.set_polygon(building_polygon['polygon'], fill_color='black', outline_color='black', name=building_polygon['id'])) count+=1 root_tk.mainloop()