From 7935bf6b9ae07b7419769ed1fea4d7211e7a3264 Mon Sep 17 00:00:00 2001 From: Robert Ison Date: Sun, 26 Jul 2026 22:51:19 -0400 Subject: [PATCH 01/18] # Avoid dividing by zero when this group has no range. --- apps/americanmapbook/americanmapbook.star | 70 +++++++++++------------ 1 file changed, 32 insertions(+), 38 deletions(-) diff --git a/apps/americanmapbook/americanmapbook.star b/apps/americanmapbook/americanmapbook.star index 3b1f92c5c..51bba910d 100644 --- a/apps/americanmapbook/americanmapbook.star +++ b/apps/americanmapbook/americanmapbook.star @@ -1946,67 +1946,61 @@ world_heritage_sites = [ ] def get_bounds(coordinates): - """ - Looks through the coordinates and determins the min and max x and y coordinates - - Args: - coordinates (List of lists): The coordinates - - Returns: - dictionary of min and max coordinates - - """ if not coordinates: - return {"min_x": None, "max_x": None, "min_y": None, "max_y": None} + return { + "minx": 0, + "maxx": 0, + "miny": 0, + "maxy": 0, + } - min_x = coordinates[0][0] - max_x = coordinates[0][0] - min_y = coordinates[0][1] - max_y = coordinates[0][1] + minx = coordinates[0][0] + maxx = coordinates[0][0] + miny = coordinates[0][1] + maxy = coordinates[0][1] for coord in coordinates: x, y = coord[0], coord[1] - if x < min_x: - min_x = x - if x > max_x: - max_x = x - if y < min_y: - min_y = y - if y > max_y: - max_y = y + if x < minx: + minx = x + if x > maxx: + maxx = x + if y < miny: + miny = y + if y > maxy: + maxy = y - #print("min_x: %s max_x: %s , : min_y, %s: max_y: %s" % (min_x, max_x, min_y,max_y)) - - return {"min_x": min_x, "max_x": max_x, "min_y": min_y, "max_y": max_y} + return { + "minx": minx, + "maxx": maxx, + "miny": miny, + "maxy": maxy, + } def normalize_coordinates(coords, bounds, grid_width, grid_height): - # Extract all coordinate pairs from the nested structure raw_coords = [] for point in coords: raw_coords.append((point[0], point[1])) - # Initialize min/max values - min_x = bounds["min_x"] - max_x = bounds["max_x"] - min_y = bounds["min_y"] - max_y = bounds["max_y"] + min_x = bounds["minx"] + max_x = bounds["maxx"] + min_y = bounds["miny"] + max_y = bounds["maxy"] - # Function to scale values to fit within the grid def scale(value, min_val, max_val, new_min, new_max): + if max_val == min_val: + return new_min return int((value - min_val) * (new_max - new_min) / (max_val - min_val) + new_min) - # Normalize coordinates to fit within the grid grid_points = [] - for coord in raw_coords: x = coord[0] y = coord[1] grid_x = scale(x, min_x, max_x, 0, grid_width - 1) grid_y = scale(y, min_y, max_y, 0, grid_height - 1) - grid_points.append((grid_x, grid_y)) # Allow duplicates - #print("X: %s Y: %s" % (grid_x, grid_y)) + grid_points.append((grid_x, grid_y)) - return grid_points # Return as a list with duplicates allowed + return grid_points def get_plot(grid_points, width, height, color = "#ff0"): return render.Plot( From 9d68e53c4a55ae14fbaddc3badd2741e9bcb8682 Mon Sep 17 00:00:00 2001 From: Robert Ison Date: Sun, 26 Jul 2026 23:05:18 -0400 Subject: [PATCH 02/18] ept the visit counter visible after the count-up animation by rendering the final count during the ending hold frames instead of only during the animated update frames. --- apps/americanmapbook/americanmapbook.star | 52 +++++++++++++++++------ 1 file changed, 40 insertions(+), 12 deletions(-) diff --git a/apps/americanmapbook/americanmapbook.star b/apps/americanmapbook/americanmapbook.star index 51bba910d..d55a390be 100644 --- a/apps/americanmapbook/americanmapbook.star +++ b/apps/americanmapbook/americanmapbook.star @@ -2164,14 +2164,19 @@ def main(config): gridpoints = normalize_coordinates(group, maps[i], offsets[i][0], offsets[i][1]) for point in gridpoints: - # The plot coordinates start at the bottom left - # however, the coordinates of the individual dots start at the top right - # also, these points are moved around to fit on the 'inset' map they belong to - # these formulae account for those adjustments to get the items on the right spot on the right map converted_x = point[0] + offsets[i][2] converted_y = height - point[1] + offsets[i][3] total_visited = total_visited + 1 - items_to_plot.append(add_padding_to_child_element(get_dot(visited_color, dot_size), converted_x, converted_y)) + + items_to_plot.append( + add_padding_to_child_element( + get_dot(visited_color, dot_size), + converted_x, + converted_y, + ) + ) + + frame_items = list(items_to_plot) if config.get("showCount") == "true": display_text = render.Text( @@ -2181,7 +2186,8 @@ def main(config): ) text_w, text_h = display_text.size() pad = 2 if is2x else 1 - items_to_plot.append(add_padding_to_child_element( + + counter_overlay = add_padding_to_child_element( render.Box( color = "#000", width = text_w, @@ -2190,17 +2196,39 @@ def main(config): ), width - pad - text_w, height - pad - text_h, - )) + ) - # Frame 4 is map + unvisited + visited + Count - animation_frames.append(render.Stack(children = items_to_plot)) + frame_items.append(counter_overlay) - # Next set of frames is map + unvisited + visited one at a time + counter if selected - animation_frames.append(render.Stack(children = items_to_plot)) + animation_frames.append(render.Stack(children = frame_items)) # Add several frames of the final product to keep on screen for longer for _ in range(100): - animation_frames.append(render.Stack(children = items_to_plot)) + final_items = list(items_to_plot) + + if config.get("showCount") == "true": + display_text = render.Text( + content = str(total_visited), + font = font, + color = visited_color, + ) + text_w, text_h = display_text.size() + pad = 2 if is2x else 1 + + final_items.append( + add_padding_to_child_element( + render.Box( + color = "#000", + width = text_w, + height = text_h, + child = display_text, + ), + width - pad - text_w, + height - pad - text_h, + ) + ) + + animation_frames.append(render.Stack(children = final_items)) return render.Root( delay = 75, From b78950678afe6a477de101b485fa327e97222969 Mon Sep 17 00:00:00 2001 From: Robert Ison Date: Sun, 26 Jul 2026 23:10:37 -0400 Subject: [PATCH 03/18] Renamed the local type variable in main() to avoid shadowing the built-in name and make the tracking selection logic clearer --- apps/americanmapbook/americanmapbook.star | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/apps/americanmapbook/americanmapbook.star b/apps/americanmapbook/americanmapbook.star index d55a390be..55cbc4da8 100644 --- a/apps/americanmapbook/americanmapbook.star +++ b/apps/americanmapbook/americanmapbook.star @@ -2115,16 +2115,17 @@ def main(config): preface = "PARK" config_item = "park" - type = config.get("type", TRACKING_OPTIONS[0].value) - if type == "national_parks": + tracking_type = config.get("type", TRACKING_OPTIONS[0].value) + + if tracking_type == "national_parks": usa_locations = usa_national_parks preface = "PARK" config_item = "park" - elif type == "capitols": + elif tracking_type == "capitols": usa_locations = usa_capitols preface = "STATE" config_item = "location" - elif type == "world_heritage_sites": + elif tracking_type == "world_heritage_sites": usa_locations = world_heritage_sites preface = "HERITAGE" config_item = "site" From f2cbf01189330426353cb5516558fe7146cca93d Mon Sep 17 00:00:00 2001 From: Robert Ison Date: Sun, 26 Jul 2026 23:13:18 -0400 Subject: [PATCH 04/18] Extracted repeated point conversion logic into a helper to reduce duplication and simplify future map positioning changes. --- apps/americanmapbook/americanmapbook.star | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/apps/americanmapbook/americanmapbook.star b/apps/americanmapbook/americanmapbook.star index 55cbc4da8..67bf0b815 100644 --- a/apps/americanmapbook/americanmapbook.star +++ b/apps/americanmapbook/americanmapbook.star @@ -2027,6 +2027,11 @@ def add_padding_to_child_element(element, left = 0, top = 0, right = 0, bottom = return padded_element +def convert_point_for_map(point, offset, height): + converted_x = point[0] + offset[2] + converted_y = height - point[1] + offset[3] + return converted_x, converted_y + def main(config): # Holds the coordinates of the outline of the different maps mainland_coordinates = [] @@ -2151,8 +2156,7 @@ def main(config): # however, the coordinates of the individual dots start at the top right # also, these points are moved around to fit on the 'inset' map they belong to # these formulae account for those adjustments to get the items on the right spot on the right map - converted_x = point[0] + offsets[i][2] - converted_y = height - point[1] + offsets[i][3] + converted_x, converted_y = convert_point_for_map(point, offsets[i], height) items_to_plot.append(add_padding_to_child_element(get_dot(unvisited_color, dot_size), converted_x, converted_y)) @@ -2165,8 +2169,7 @@ def main(config): gridpoints = normalize_coordinates(group, maps[i], offsets[i][0], offsets[i][1]) for point in gridpoints: - converted_x = point[0] + offsets[i][2] - converted_y = height - point[1] + offsets[i][3] + converted_x, converted_y = convert_point_for_map(point, offsets[i], height) total_visited = total_visited + 1 items_to_plot.append( From 6fde11aeb7a86ae332ababbeb40e153076d8f04d Mon Sep 17 00:00:00 2001 From: Robert Ison Date: Sun, 26 Jul 2026 23:15:33 -0400 Subject: [PATCH 05/18] Documented the map subgroup index assignments for mainland, Hawaii, and Alaska via named constants instead of bare numeric lists --- apps/americanmapbook/americanmapbook.star | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/apps/americanmapbook/americanmapbook.star b/apps/americanmapbook/americanmapbook.star index 67bf0b815..2334de3d5 100644 --- a/apps/americanmapbook/americanmapbook.star +++ b/apps/americanmapbook/americanmapbook.star @@ -2040,9 +2040,14 @@ def main(config): # the usa_map_data we have comes in 8 sections, basically coordiantes of 8 different islands. # for mapping purposes we'll group them into the mainland, hawaii and alaska - mainland_sections = [1] - hawaii_sections = [2, 3, 4, 5, 6] - alaska_sections = [7, 8, 9] + # Group geojson subgroups into mainland, Hawaii, and Alaska + MAINLAND_SECTION_INDEXES = [1] + HAWAII_SECTION_INDEXES = [2, 3, 4, 5, 6] + ALASKA_SECTION_INDEXES = [7, 8, 9] + + mainland_sections = MAINLAND_SECTION_INDEXES + hawaii_sections = HAWAII_SECTION_INDEXES + alaska_sections = ALASKA_SECTION_INDEXES map_color = config.get("map_outline_color", DEFAULT_COLORS[0]) unvisited_color = config.get("unvisited_color", DEFAULT_COLORS[1]) From 2193d9c8c5f07f8cd2cc0fc07500b793cab021bd Mon Sep 17 00:00:00 2001 From: Robert Ison Date: Sun, 26 Jul 2026 23:17:16 -0400 Subject: [PATCH 06/18] Simplified tracking type fallback logic to default to capitols instead of using a None branch, ensuring the applet always uses a valid data set. --- apps/americanmapbook/americanmapbook.star | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/apps/americanmapbook/americanmapbook.star b/apps/americanmapbook/americanmapbook.star index 2334de3d5..fb84fae36 100644 --- a/apps/americanmapbook/americanmapbook.star +++ b/apps/americanmapbook/americanmapbook.star @@ -2126,22 +2126,18 @@ def main(config): config_item = "park" tracking_type = config.get("type", TRACKING_OPTIONS[0].value) - if tracking_type == "national_parks": usa_locations = usa_national_parks preface = "PARK" config_item = "park" - elif tracking_type == "capitols": - usa_locations = usa_capitols - preface = "STATE" - config_item = "location" elif tracking_type == "world_heritage_sites": usa_locations = world_heritage_sites preface = "HERITAGE" config_item = "site" else: - usa_locations = None - config_item = "" + usa_locations = usa_capitols + preface = "STATE" + config_item = "location" if usa_locations != None: for location in usa_locations: From 6d3a2f76bd09e6d74c612008b9ead2a11f0ab496 Mon Sep 17 00:00:00 2001 From: Robert Ison Date: Sun, 26 Jul 2026 23:18:32 -0400 Subject: [PATCH 07/18] Renamed the get_tracking_items() parameter to avoid shadowing the built-in type name and keep tracking logic naming consistent --- apps/americanmapbook/americanmapbook.star | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apps/americanmapbook/americanmapbook.star b/apps/americanmapbook/americanmapbook.star index fb84fae36..febfceeed 100644 --- a/apps/americanmapbook/americanmapbook.star +++ b/apps/americanmapbook/americanmapbook.star @@ -2272,12 +2272,12 @@ TRACKING_OPTIONS = [ schema.Option(value = "world_heritage_sites", display = "World Heritage Sites"), ] -def get_tracking_items(type): - if type == "capitols": +def get_tracking_items(tracking_type): + if tracking_type == "capitols": return get_location_options(usa_capitols) - elif type == "national_parks": + elif tracking_type == "national_parks": return get_national_park_options(usa_national_parks) - elif type == "world_heritage_sites": + elif tracking_type == "world_heritage_sites": return get_world_heritage_options(world_heritage_sites) else: return get_location_options(usa_capitols) From 461d6096a2cc6a2040b77c750988d3a84ddf6ec0 Mon Sep 17 00:00:00 2001 From: Robert Ison Date: Sun, 26 Jul 2026 23:20:40 -0400 Subject: [PATCH 08/18] Cleaned up spelling and comment wording to make the rendering and map-grouping code easier to understand --- apps/americanmapbook/americanmapbook.star | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/apps/americanmapbook/americanmapbook.star b/apps/americanmapbook/americanmapbook.star index febfceeed..67dbd4614 100644 --- a/apps/americanmapbook/americanmapbook.star +++ b/apps/americanmapbook/americanmapbook.star @@ -8,7 +8,7 @@ Author: Robert Ison load("render.star", "canvas", "render") load("schema.star", "schema") -DEFAULT_COLORS = ["#009A17", "#708090", "#FFD700"] #map, unvisted, visited +DEFAULT_COLORS = ["#009A17", "#708090", "#FFD700"] #map, unvisited, visited # USA JSON structure usa_map_data = { @@ -2038,8 +2038,8 @@ def main(config): hawaii_coordinates = [] alaska_coordinates = [] - # the usa_map_data we have comes in 8 sections, basically coordiantes of 8 different islands. - # for mapping purposes we'll group them into the mainland, hawaii and alaska + # The usa_map_data coordinates come in multiple subgroups. + # For mapping purposes, group them into mainland, Hawaii, and Alaska. # Group geojson subgroups into mainland, Hawaii, and Alaska MAINLAND_SECTION_INDEXES = [1] HAWAII_SECTION_INDEXES = [2, 3, 4, 5, 6] @@ -2074,9 +2074,9 @@ def main(config): # keep track of the three different maps maps = [mainland_bounds, hawaii_bounds, alaska_bounds] - #Create Frames for Display - animation_frames = [] #We want to display the map, but build up slowly, not just stack the whole thing at once - items_to_plot = [] #As we progress through the list of items for our display, we keep adding to stacked_items + # Create frames for display + animation_frames = [] # Build the animation gradually instead of rendering everything at once. + items_to_plot = [] # Keep track of everything currently visible in the animation. gridpoints = [] width, height = canvas.width(), canvas.height() From 86aa84f7303b5582b9e75346005941ca716ef550 Mon Sep 17 00:00:00 2001 From: Robert Ison Date: Sun, 26 Jul 2026 23:22:52 -0400 Subject: [PATCH 09/18] =?UTF-8?q?Updated=20normalize=5Fcoordinates()=20to?= =?UTF-8?q?=20use=20the=20same=20bounds=20dictionary=20keys=20returned=20b?= =?UTF-8?q?y=20get=5Fbounds()=E2=80=94changing=20minx/maxx/miny/maxy=20loo?= =?UTF-8?q?kups=20to=20min=5Fx/max=5Fx/min=5Fy/max=5Fy=20so=20coordinate?= =?UTF-8?q?=20scaling=20works=20correctly=20again.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/americanmapbook/americanmapbook.star | 42 ++++++----------------- 1 file changed, 11 insertions(+), 31 deletions(-) diff --git a/apps/americanmapbook/americanmapbook.star b/apps/americanmapbook/americanmapbook.star index 67dbd4614..dabc43e29 100644 --- a/apps/americanmapbook/americanmapbook.star +++ b/apps/americanmapbook/americanmapbook.star @@ -1946,35 +1946,14 @@ world_heritage_sites = [ ] def get_bounds(coordinates): - if not coordinates: - return { - "minx": 0, - "maxx": 0, - "miny": 0, - "maxy": 0, - } - - minx = coordinates[0][0] - maxx = coordinates[0][0] - miny = coordinates[0][1] - maxy = coordinates[0][1] - - for coord in coordinates: - x, y = coord[0], coord[1] - if x < minx: - minx = x - if x > maxx: - maxx = x - if y < miny: - miny = y - if y > maxy: - maxy = y + xs = [coord[0] for coord in coordinates] + ys = [coord[1] for coord in coordinates] return { - "minx": minx, - "maxx": maxx, - "miny": miny, - "maxy": maxy, + "min_x": min(xs), + "max_x": max(xs), + "min_y": min(ys), + "max_y": max(ys), } def normalize_coordinates(coords, bounds, grid_width, grid_height): @@ -1982,10 +1961,11 @@ def normalize_coordinates(coords, bounds, grid_width, grid_height): for point in coords: raw_coords.append((point[0], point[1])) - min_x = bounds["minx"] - max_x = bounds["maxx"] - min_y = bounds["miny"] - max_y = bounds["maxy"] + # Initialize min/max values + min_x = bounds["min_x"] + max_x = bounds["max_x"] + min_y = bounds["min_y"] + max_y = bounds["max_y"] def scale(value, min_val, max_val, new_min, new_max): if max_val == min_val: From f29df20176f927a131ea033fccdbe3c790514245 Mon Sep 17 00:00:00 2001 From: Robert Ison Date: Sun, 26 Jul 2026 23:24:36 -0400 Subject: [PATCH 10/18] Reworked the visited-point loop so the count overlay is added per frame instead of permanently, preventing multiple stacked counters and keeping items_to_plot clean --- apps/americanmapbook/americanmapbook.star | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/apps/americanmapbook/americanmapbook.star b/apps/americanmapbook/americanmapbook.star index dabc43e29..d8486c78b 100644 --- a/apps/americanmapbook/americanmapbook.star +++ b/apps/americanmapbook/americanmapbook.star @@ -2153,15 +2153,17 @@ def main(config): converted_x, converted_y = convert_point_for_map(point, offsets[i], height) total_visited = total_visited + 1 + # Add the visited dot items_to_plot.append( add_padding_to_child_element( get_dot(visited_color, dot_size), converted_x, converted_y, - ) + ), ) - frame_items = list(items_to_plot) + # Prepare a frame-specific children list so we don't keep stacking count boxes + frame_children = list(items_to_plot) if config.get("showCount") == "true": display_text = render.Text( @@ -2171,8 +2173,7 @@ def main(config): ) text_w, text_h = display_text.size() pad = 2 if is2x else 1 - - counter_overlay = add_padding_to_child_element( + count_box = add_padding_to_child_element( render.Box( color = "#000", width = text_w, @@ -2182,10 +2183,10 @@ def main(config): width - pad - text_w, height - pad - text_h, ) + frame_children.append(count_box) - frame_items.append(counter_overlay) - - animation_frames.append(render.Stack(children = frame_items)) + # For each visited point, add a frame with map + unvisited + visited (+ optional count) + animation_frames.append(render.Stack(children = frame_children)) # Add several frames of the final product to keep on screen for longer for _ in range(100): From 3227a5587f88e4a27609b8157a3c428c1ee7ede9 Mon Sep 17 00:00:00 2001 From: Robert Ison Date: Sun, 26 Jul 2026 23:26:09 -0400 Subject: [PATCH 11/18] =?UTF-8?q?Added=20a=20guard=20in=20the=20coordinate?= =?UTF-8?q?-scaling=20helper=20so=20normalization=20won=E2=80=99t=20divide?= =?UTF-8?q?=20by=20zero=20when=20all=20points=20in=20a=20group=20share=20t?= =?UTF-8?q?he=20same=20x=20or=20y=20value;=20in=20that=20case,=20the=20cod?= =?UTF-8?q?e=20now=20places=20the=20result=20at=20the=20midpoint=20of=20th?= =?UTF-8?q?e=20target=20range=20instead=20of=20crashing.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/americanmapbook/americanmapbook.star | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/americanmapbook/americanmapbook.star b/apps/americanmapbook/americanmapbook.star index d8486c78b..a4a1ea2ba 100644 --- a/apps/americanmapbook/americanmapbook.star +++ b/apps/americanmapbook/americanmapbook.star @@ -1969,7 +1969,8 @@ def normalize_coordinates(coords, bounds, grid_width, grid_height): def scale(value, min_val, max_val, new_min, new_max): if max_val == min_val: - return new_min + # Degenerate case: all points share the same coordinate; put them in the middle. + return int((new_min + new_max) / 2) return int((value - min_val) * (new_max - new_min) / (max_val - min_val) + new_min) grid_points = [] From ed22c6ac1d1394e303d659314b33c029834c9081 Mon Sep 17 00:00:00 2001 From: Robert Ison Date: Sun, 26 Jul 2026 23:28:16 -0400 Subject: [PATCH 12/18] Removed an unused local variable and simplified the padding helper to return the render.Padding object directly --- apps/americanmapbook/americanmapbook.star | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/apps/americanmapbook/americanmapbook.star b/apps/americanmapbook/americanmapbook.star index a4a1ea2ba..121e54961 100644 --- a/apps/americanmapbook/americanmapbook.star +++ b/apps/americanmapbook/americanmapbook.star @@ -2001,13 +2001,11 @@ def get_dot(color, size = 1): ) def add_padding_to_child_element(element, left = 0, top = 0, right = 0, bottom = 0): - padded_element = render.Padding( + return render.Padding( pad = (left, top, right, bottom), child = element, ) - return padded_element - def convert_point_for_map(point, offset, height): converted_x = point[0] + offset[2] converted_y = height - point[1] + offset[3] @@ -2058,7 +2056,6 @@ def main(config): # Create frames for display animation_frames = [] # Build the animation gradually instead of rendering everything at once. items_to_plot = [] # Keep track of everything currently visible in the animation. - gridpoints = [] width, height = canvas.width(), canvas.height() is2x = canvas.is2x() From 938cb52cd812dfeea96c25e87b54b3cf596d2f91 Mon Sep 17 00:00:00 2001 From: Robert Ison Date: Sun, 26 Jul 2026 23:49:53 -0400 Subject: [PATCH 13/18] Add presidential libraries --- .../americanmapbook/americanmapbook_data.star | 1952 +++++++++++++++++ 1 file changed, 1952 insertions(+) create mode 100644 apps/americanmapbook/americanmapbook_data.star diff --git a/apps/americanmapbook/americanmapbook_data.star b/apps/americanmapbook/americanmapbook_data.star new file mode 100644 index 000000000..327769e0a --- /dev/null +++ b/apps/americanmapbook/americanmapbook_data.star @@ -0,0 +1,1952 @@ + +# USA JSON structure +usa_map_data = { + "coordinates": [ + [ + [ + [ + -122.84, + 49.000000000000114, + ], + [ + -120, + 49.000000000000114, + ], + [ + -117.03121, + 49, + ], + [ + -116.04818, + 49, + ], + [ + -113, + 49, + ], + [ + -110.05, + 49, + ], + [ + -107.05, + 49, + ], + [ + -104.04826, + 48.99986, + ], + [ + -100.65, + 49.000000000000114, + ], + [ + -97.2287200000048, + 49.0007, + ], + [ + -95.15906950917206, + 49, + ], + [ + -95.15609, + 49.38425, + ], + [ + -94.81758, + 49.38905, + ], + [ + -94.64, + 48.84, + ], + [ + -94.32914, + 48.67074, + ], + [ + -93.63087, + 48.60926, + ], + [ + -92.61, + 48.45, + ], + [ + -91.64, + 48.14, + ], + [ + -90.83, + 48.27, + ], + [ + -89.6, + 48.010000000000105, + ], + [ + -89.27291744663665, + 48.01980825458281, + ], + [ + -88.37811418328671, + 48.302917588893706, + ], + [ + -87.43979262330028, + 47.94, + ], + [ + -86.46199083122826, + 47.553338019392, + ], + [ + -85.65236324740341, + 47.22021881773051, + ], + [ + -84.8760798815149, + 46.90008331968238, + ], + [ + -84.77923824739992, + 46.63710195574902, + ], + [ + -84.54374874544584, + 46.538684190449146, + ], + [ + -84.6049, + 46.4396, + ], + [ + -84.3367, + 46.40877, + ], + [ + -84.1421195136734, + 46.51222585711571, + ], + [ + -84.0918512641615, + 46.27541860613826, + ], + [ + -83.89076534700574, + 46.116926988299014, + ], + [ + -83.61613094759059, + 46.116926988299014, + ], + [ + -83.46955074739469, + 45.994686387712534, + ], + [ + -83.59285071484311, + 45.81689362241252, + ], + [ + -82.55092464875821, + 45.34751658790543, + ], + [ + -82.33776312543114, + 44.44, + ], + [ + -82.13764238150395, + 43.57108755143997, + ], + [ + -82.43, + 42.98, + ], + [ + -82.9, + 42.43, + ], + [ + -83.12, + 42.08, + ], + [ + -83.14199968131264, + 41.975681057292874, + ], + [ + -83.029810146807, + 41.83279572200598, + ], + [ + -82.69008928092023, + 41.675105088867326, + ], + [ + -82.4392777167916, + 41.675105088867326, + ], + [ + -81.27774654816716, + 42.209025987306816, + ], + [ + -80.24744767934794, + 42.36619985612255, + ], + [ + -78.93936214874375, + 42.86361135514798, + ], + [ + -78.92, + 42.965, + ], + [ + -79.01, + 43.27, + ], + [ + -79.17167355011186, + 43.46633942318426, + ], + [ + -78.72027991404235, + 43.62508942318493, + ], + [ + -77.7378850979577, + 43.62905558936328, + ], + [ + -76.82003414580558, + 43.628784288093755, + ], + [ + -76.5, + 44.01845889375865, + ], + [ + -76.375, + 44.09631, + ], + [ + -75.31821, + 44.81645, + ], + [ + -74.867, + 45.00048, + ], + [ + -73.34783, + 45.00738, + ], + [ + -71.50506, + 45.0082, + ], + [ + -71.405, + 45.255, + ], + [ + -71.08482, + 45.30524000000014, + ], + [ + -70.66, + 45.46, + ], + [ + -70.305, + 45.915, + ], + [ + -69.99997, + 46.69307, + ], + [ + -69.237216, + 47.447781, + ], + [ + -68.905, + 47.185, + ], + [ + -68.23444, + 47.35486, + ], + [ + -67.79046, + 47.06636, + ], + [ + -67.79134, + 45.70281, + ], + [ + -67.13741, + 45.13753, + ], + [ + -66.96466, + 44.809700000000134, + ], + [ + -68.03252, + 44.3252, + ], + [ + -69.06, + 43.98, + ], + [ + -70.11617, + 43.68405000000013, + ], + [ + -70.64547563341102, + 43.09023834896402, + ], + [ + -70.81489, + 42.8653, + ], + [ + -70.825, + 42.335, + ], + [ + -70.495, + 41.805, + ], + [ + -70.08, + 41.78, + ], + [ + -70.185, + 42.145, + ], + [ + -69.88497, + 41.92283, + ], + [ + -69.96503, + 41.63717000000014, + ], + [ + -70.64, + 41.475, + ], + [ + -71.12039, + 41.49445000000014, + ], + [ + -71.86, + 41.32, + ], + [ + -72.295, + 41.27, + ], + [ + -72.87643, + 41.22065, + ], + [ + -73.71, + 40.93110235165449, + ], + [ + -72.24126, + 41.119480000000124, + ], + [ + -71.94499999999988, + 40.93, + ], + [ + -73.345, + 40.63, + ], + [ + -73.982, + 40.628, + ], + [ + -73.952325, + 40.75075, + ], + [ + -74.25671, + 40.47351, + ], + [ + -73.96244, + 40.42763, + ], + [ + -74.17838, + 39.70926, + ], + [ + -74.90604, + 38.93954, + ], + [ + -74.98041, + 39.1964, + ], + [ + -75.20002, + 39.248450000000105, + ], + [ + -75.52805, + 39.4985, + ], + [ + -75.32, + 38.96, + ], + [ + -75.07183476478986, + 38.782032230179254, + ], + [ + -75.05673, + 38.40412, + ], + [ + -75.37747, + 38.01551, + ], + [ + -75.94023, + 37.21689, + ], + [ + -76.03127, + 37.2566, + ], + [ + -75.72204999999985, + 37.93705000000011, + ], + [ + -76.23287, + 38.319215, + ], + [ + -76.35, + 39.15, + ], + [ + -76.542725, + 38.717615, + ], + [ + -76.32933, + 38.08326, + ], + [ + -76.98999793161352, + 38.23999176691336, + ], + [ + -76.30162, + 37.917945, + ], + [ + -76.25874, + 36.9664, + ], + [ + -75.9718, + 36.89726, + ], + [ + -75.8680399999999, + 36.55125, + ], + [ + -75.72749, + 35.55074000000013, + ], + [ + -76.36318, + 34.80854000000011, + ], + [ + -77.397635, + 34.51201, + ], + [ + -78.05496, + 33.92547, + ], + [ + -78.55434999999989, + 33.86133000000012, + ], + [ + -79.06067, + 33.49395, + ], + [ + -79.20357, + 33.15839, + ], + [ + -80.301325, + 32.509355, + ], + [ + -80.86498, + 32.0333, + ], + [ + -81.33629, + 31.44049, + ], + [ + -81.49042, + 30.7299900000001, + ], + [ + -81.31371, + 30.03552, + ], + [ + -80.98, + 29.18000000000012, + ], + [ + -80.535585, + 28.47213, + ], + [ + -80.52999999999986, + 28.04, + ], + [ + -80.05653928497759, + 26.88000000000011, + ], + [ + -80.088015, + 26.205765, + ], + [ + -80.13156, + 25.816775, + ], + [ + -80.38103, + 25.20616, + ], + [ + -80.68, + 25.08, + ], + [ + -81.17213, + 25.201260000000104, + ], + [ + -81.33, + 25.64, + ], + [ + -81.70999999999987, + 25.87, + ], + [ + -82.24, + 26.730000000000132, + ], + [ + -82.70515, + 27.49504, + ], + [ + -82.85526, + 27.88624, + ], + [ + -82.65, + 28.550000000000125, + ], + [ + -82.93, + 29.1, + ], + [ + -83.70959, + 29.93656, + ], + [ + -84.1, + 30.09, + ], + [ + -85.10882, + 29.63615, + ], + [ + -85.28784, + 29.68612000000013, + ], + [ + -85.7731, + 30.15261, + ], + [ + -86.4, + 30.4, + ], + [ + -87.53036, + 30.27433, + ], + [ + -88.41782, + 30.3849, + ], + [ + -89.18049, + 30.31598, + ], + [ + -89.5938311784198, + 30.159994004836847, + ], + [ + -89.413735, + 29.89419, + ], + [ + -89.43, + 29.48864, + ], + [ + -89.21767, + 29.29108, + ], + [ + -89.40823, + 29.15961, + ], + [ + -89.77928, + 29.307140000000118, + ], + [ + -90.15463, + 29.11743, + ], + [ + -90.880225, + 29.148535, + ], + [ + -91.626785, + 29.677000000000135, + ], + [ + -92.49906, + 29.5523, + ], + [ + -93.22637, + 29.78375, + ], + [ + -93.84842, + 29.71363, + ], + [ + -94.69, + 29.480000000000132, + ], + [ + -95.60026, + 28.73863, + ], + [ + -96.59404, + 28.30748, + ], + [ + -97.13999999999987, + 27.83, + ], + [ + -97.37, + 27.38, + ], + [ + -97.38, + 26.69, + ], + [ + -97.33, + 26.21, + ], + [ + -97.13999999999987, + 25.87, + ], + [ + -97.53, + 25.84, + ], + [ + -98.24, + 26.06, + ], + [ + -99.02, + 26.37, + ], + [ + -99.3, + 26.84, + ], + [ + -99.52, + 27.54, + ], + [ + -100.11, + 28.110000000000127, + ], + [ + -100.45584, + 28.69612000000012, + ], + [ + -100.9576, + 29.380710000000136, + ], + [ + -101.6624, + 29.7793, + ], + [ + -102.48, + 29.76, + ], + [ + -103.11, + 28.97, + ], + [ + -103.94, + 29.27, + ], + [ + -104.4569699999999, + 29.57196, + ], + [ + -104.70575, + 30.12173, + ], + [ + -105.03737, + 30.64402, + ], + [ + -105.63159, + 31.08383, + ], + [ + -106.1429, + 31.39995, + ], + [ + -106.50758999999988, + 31.75452, + ], + [ + -108.24, + 31.754853718166373, + ], + [ + -108.24194, + 31.34222, + ], + [ + -109.035, + 31.341940000000136, + ], + [ + -111.02361, + 31.33472, + ], + [ + -113.30498, + 32.03914, + ], + [ + -114.815, + 32.52528, + ], + [ + -114.72139, + 32.72083, + ], + [ + -115.99135, + 32.61239000000012, + ], + [ + -117.12775999999985, + 32.53534, + ], + [ + -117.29593769127393, + 33.04622461520387, + ], + [ + -117.944, + 33.621236431201396, + ], + [ + -118.41060227589753, + 33.74090922312445, + ], + [ + -118.51989482279976, + 34.02778157757575, + ], + [ + -119.081, + 34.078, + ], + [ + -119.43884064201671, + 34.34847717828427, + ], + [ + -120.36778, + 34.44711, + ], + [ + -120.62286, + 34.60855, + ], + [ + -120.74433, + 35.15686000000011, + ], + [ + -121.71457, + 36.16153, + ], + [ + -122.54747, + 37.551760000000115, + ], + [ + -122.51201, + 37.78339000000011, + ], + [ + -122.95319, + 38.11371, + ], + [ + -123.7272, + 38.95166000000012, + ], + [ + -123.86517, + 39.76699, + ], + [ + -124.39807, + 40.3132, + ], + [ + -124.17886, + 41.142020000000116, + ], + [ + -124.2137, + 41.99964000000011, + ], + [ + -124.53284, + 42.7659900000001, + ], + [ + -124.14214, + 43.70838, + ], + [ + -124.020535, + 44.615895, + ], + [ + -123.89893, + 45.52341, + ], + [ + -124.079635, + 46.86475, + ], + [ + -124.39567, + 47.72017000000011, + ], + [ + -124.68721008300781, + 48.18443298339855, + ], + [ + -124.56610107421875, + 48.37971496582037, + ], + [ + -123.12, + 48.04, + ], + [ + -122.58736, + 47.096, + ], + [ + -122.34, + 47.36, + ], + [ + -122.5, + 48.18, + ], + [ + -122.84, + 49.000000000000114, + ], + ], + ], + [ + [ + [ + -155.40214, + 20.07975, + ], + [ + -155.22452, + 19.99302, + ], + [ + -155.06226, + 19.8591, + ], + [ + -154.80741, + 19.50871, + ], + [ + -154.83147, + 19.45328, + ], + [ + -155.22217, + 19.23972, + ], + [ + -155.54211, + 19.08348, + ], + [ + -155.68817, + 18.91619, + ], + [ + -155.93665, + 19.05939, + ], + [ + -155.90806, + 19.33888, + ], + [ + -156.07347, + 19.70294, + ], + [ + -156.02368, + 19.81422, + ], + [ + -155.85008, + 19.97729, + ], + [ + -155.91907, + 20.17395, + ], + [ + -155.86108, + 20.26721, + ], + [ + -155.78505, + 20.2487, + ], + [ + -155.40214, + 20.07975, + ], + ], + ], + [ + [ + [ + -155.99566, + 20.76404, + ], + [ + -156.07926, + 20.64397, + ], + [ + -156.41445, + 20.57241, + ], + [ + -156.58673, + 20.783, + ], + [ + -156.70167, + 20.8643, + ], + [ + -156.71055, + 20.92676, + ], + [ + -156.61258, + 21.01249, + ], + [ + -156.25711, + 20.91745, + ], + [ + -155.99566, + 20.76404, + ], + ], + ], + [ + [ + [ + -156.75824, + 21.17684, + ], + [ + -156.78933, + 21.06873, + ], + [ + -157.32521, + 21.09777, + ], + [ + -157.25027, + 21.21958, + ], + [ + -156.75824, + 21.17684, + ], + ], + ], + [ + [ + [ + -158.0252, + 21.71696, + ], + [ + -157.94161, + 21.65272, + ], + [ + -157.65283, + 21.32217, + ], + [ + -157.70703, + 21.26442, + ], + [ + -157.7786, + 21.27729, + ], + [ + -158.12667, + 21.31244, + ], + [ + -158.2538, + 21.53919, + ], + [ + -158.29265, + 21.57912, + ], + [ + -158.0252, + 21.71696, + ], + ], + ], + [ + [ + [ + -159.36569, + 22.21494, + ], + [ + -159.34512, + 21.982, + ], + [ + -159.46372, + 21.88299, + ], + [ + -159.80051, + 22.06533, + ], + [ + -159.74877, + 22.1382, + ], + [ + -159.5962, + 22.23618, + ], + [ + -159.36569, + 22.21494, + ], + ], + ], + [ + [ + [ + -166.46779212142462, + 60.384169826897754, + ], + [ + -165.67442969466364, + 60.29360687930625, + ], + [ + -165.57916419173358, + 59.90998688418753, + ], + [ + -166.19277014876727, + 59.75444082298899, + ], + [ + -166.84833736882197, + 59.941406155020985, + ], + [ + -167.45527706609008, + 60.21306915957936, + ], + [ + -166.46779212142462, + 60.384169826897754, + ], + ], + ], + [ + [ + [ + -153.22872941792113, + 57.96896841087248, + ], + [ + -152.56479061583514, + 57.901427313866996, + ], + [ + -152.1411472239064, + 57.591058661522, + ], + [ + -153.00631405333692, + 57.11584219016593, + ], + [ + -154.0050902984581, + 56.734676825581076, + ], + [ + -154.51640275777004, + 56.99274892844669, + ], + [ + -154.67099280497118, + 57.46119578717253, + ], + [ + -153.7627795074415, + 57.81657461204373, + ], + [ + -153.22872941792113, + 57.96896841087248, + ], + ], + ], + [ + [ + [ + -140.98598761037601, + 69.71199839952635, + ], + [ + -140.986, + 69.712, + ], + [ + -140.9925, + 66.00003, + ], + [ + -140.99778, + 60.30639, + ], + [ + -140.013, + 60.27682, + ], + [ + -139.039, + 60, + ], + [ + -138.34089, + 59.56211, + ], + [ + -137.4525, + 58.905, + ], + [ + -136.47972, + 59.46389, + ], + [ + -135.47583, + 59.78778, + ], + [ + -134.945, + 59.2705600000001, + ], + [ + -134.27111, + 58.86111, + ], + [ + -133.35556, + 58.41028, + ], + [ + -132.73042, + 57.69289, + ], + [ + -131.70781, + 56.55212, + ], + [ + -130.00778, + 55.91583, + ], + [ + -129.98, + 55.285, + ], + [ + -130.53611, + 54.80278, + ], + [ + -130.53610895273684, + 54.80275447679924, + ], + [ + -130.5361101894673, + 54.8027534043494, + ], + [ + -131.08581823797215, + 55.17890615500204, + ], + [ + -131.9672114671423, + 55.497775580459006, + ], + [ + -132.2500107428595, + 56.3699962428974, + ], + [ + -133.53918108435641, + 57.17888743756214, + ], + [ + -134.07806292029608, + 58.12306753196691, + ], + [ + -135.0382110322791, + 58.18771474876394, + ], + [ + -136.62806230995471, + 58.21220937767043, + ], + [ + -137.800006279686, + 58.49999542910376, + ], + [ + -139.867787041413, + 59.53776154238915, + ], + [ + -140.825273817133, + 59.727517401765056, + ], + [ + -142.57444353556446, + 60.08444651960497, + ], + [ + -143.9588809948799, + 59.999180406323376, + ], + [ + -145.92555681682788, + 60.45860972761426, + ], + [ + -147.11437394914665, + 60.884656073644635, + ], + [ + -148.22430620012761, + 60.67298940697714, + ], + [ + -148.01806555885082, + 59.97832896589364, + ], + [ + -148.57082251686086, + 59.914172675203304, + ], + [ + -149.72785783587585, + 59.70565827090553, + ], + [ + -150.60824337461642, + 59.368211168039466, + ], + [ + -151.7163927886833, + 59.15582103131993, + ], + [ + -151.85943315326722, + 59.744984035879554, + ], + [ + -151.40971900124717, + 60.72580272077937, + ], + [ + -150.3469414947325, + 61.03358755150987, + ], + [ + -150.62111080625704, + 61.2844249538544, + ], + [ + -151.89583919981683, + 60.727197984451266, + ], + [ + -152.57832984109558, + 60.061657212964235, + ], + [ + -154.01917212625764, + 59.35027944603428, + ], + [ + -153.28751135965317, + 58.86472768821977, + ], + [ + -154.23249243875847, + 58.14637360293051, + ], + [ + -155.3074914215102, + 57.727794501366304, + ], + [ + -156.30833472392305, + 57.422774359763594, + ], + [ + -156.55609737854638, + 56.97998484967064, + ], + [ + -158.11721655986779, + 56.46360809999419, + ], + [ + -158.43332129619714, + 55.99415355083852, + ], + [ + -159.60332739971741, + 55.56668610292013, + ], + [ + -160.28971961163427, + 55.643580634170576, + ], + [ + -161.22304765525777, + 55.364734605523495, + ], + [ + -162.23776607974105, + 55.02418691672011, + ], + [ + -163.06944658104638, + 54.68973704692712, + ], + [ + -164.78556922102717, + 54.40417308208214, + ], + [ + -164.94222632552007, + 54.57222483989534, + ], + [ + -163.84833960676565, + 55.03943146424609, + ], + [ + -162.87000139061595, + 55.34804311789321, + ], + [ + -161.80417497459607, + 55.89498647727038, + ], + [ + -160.5636047027812, + 56.00805451112501, + ], + [ + -160.07055986228448, + 56.41805532492873, + ], + [ + -158.6844429189195, + 57.01667511659787, + ], + [ + -158.46109737855403, + 57.21692129172885, + ], + [ + -157.72277035218391, + 57.57000051536306, + ], + [ + -157.55027442119362, + 58.328326321030204, + ], + [ + -157.04167497457698, + 58.91888458926172, + ], + [ + -158.19473120830554, + 58.61580231386978, + ], + [ + -158.51721798402303, + 58.78778148053732, + ], + [ + -159.0586061269288, + 58.42418610293163, + ], + [ + -159.71166704001737, + 58.93139028587632, + ], + [ + -159.98128882550017, + 58.572549140041644, + ], + [ + -160.3552711659965, + 59.07112335879361, + ], + [ + -161.3550034251151, + 58.670837714260756, + ], + [ + -161.96889360252632, + 58.67166453717738, + ], + [ + -162.05498653872465, + 59.26692536074745, + ], + [ + -161.8741707021354, + 59.63362132429057, + ], + [ + -162.51805904849212, + 59.98972361921386, + ], + [ + -163.8183414378202, + 59.79805573184336, + ], + [ + -164.66221757714652, + 60.26748444278263, + ], + [ + -165.3463877024748, + 60.50749563256238, + ], + [ + -165.3508318756519, + 61.073895168697504, + ], + [ + -166.12137915755602, + 61.50001902937623, + ], + [ + -165.73445187077058, + 62.074996853271784, + ], + [ + -164.9191786367179, + 62.63307648380794, + ], + [ + -164.56250790103934, + 63.14637848576302, + ], + [ + -163.75333248599708, + 63.21944896102377, + ], + [ + -163.06722449445786, + 63.05945872664802, + ], + [ + -162.26055538638175, + 63.54193573674115, + ], + [ + -161.53444983624863, + 63.455816962326764, + ], + [ + -160.7725066803211, + 63.766108100023246, + ], + [ + -160.9583351308426, + 64.22279857040274, + ], + [ + -161.51806840721218, + 64.40278758407527, + ], + [ + -160.77777767641481, + 64.78860382756642, + ], + [ + -161.39192623598765, + 64.77723501246231, + ], + [ + -162.4530500966689, + 64.55944468856819, + ], + [ + -162.75778601789415, + 64.33860545516876, + ], + [ + -163.54639421288428, + 64.5591604681905, + ], + [ + -164.96082984114514, + 64.44694509546883, + ], + [ + -166.42528825586447, + 64.68667206487066, + ], + [ + -166.8450042389391, + 65.08889557561452, + ], + [ + -168.11056006576715, + 65.66999705673675, + ], + [ + -166.70527116602193, + 66.08831777613938, + ], + [ + -164.47470964257548, + 66.5766600612975, + ], + [ + -163.65251176659564, + 66.5766600612975, + ], + [ + -163.78860165103623, + 66.07720734319668, + ], + [ + -161.67777442121013, + 66.11611969671242, + ], + [ + -162.48971452538004, + 66.73556509059512, + ], + [ + -163.71971696679117, + 67.11639455837008, + ], + [ + -164.4309913808565, + 67.61633820257777, + ], + [ + -165.39028683170673, + 68.04277212185025, + ], + [ + -166.76444068099605, + 68.35887685817966, + ], + [ + -166.20470740462667, + 68.88303091091615, + ], + [ + -164.43081051334346, + 68.91553538682774, + ], + [ + -163.1686136546145, + 69.37111481391287, + ], + [ + -162.930566169262, + 69.85806183539927, + ], + [ + -161.90889726463556, + 70.33332998318764, + ], + [ + -160.93479651593367, + 70.44768992784958, + ], + [ + -159.03917578838713, + 70.89164215766891, + ], + [ + -158.11972286683394, + 70.82472117785102, + ], + [ + -156.58082455139808, + 71.35776357694175, + ], + [ + -155.06779029032427, + 71.14777639432367, + ], + [ + -154.3441652089412, + 70.69640859647018, + ], + [ + -153.9000062733926, + 70.88998851183567, + ], + [ + -152.21000606993528, + 70.82999217394485, + ], + [ + -152.27000240782613, + 70.60000621202983, + ], + [ + -150.73999243874448, + 70.43001658800569, + ], + [ + -149.7200030181675, + 70.53001048449045, + ], + [ + -147.61336157935705, + 70.2140349392418, + ], + [ + -145.68998980022533, + 70.12000967068673, + ], + [ + -144.9200109590764, + 69.98999176704046, + ], + [ + -143.58944618042523, + 70.15251414659832, + ], + [ + -142.07251034871348, + 69.85193817817265, + ], + [ + -140.98598752156073, + 69.71199839952635, + ], + [ + -140.98598761037601, + 69.71199839952635, + ], + ], + ], + ], +} + +# List of U.S. state locations and their coordinates +# Full JSON usa_map_data embedded as a Starlark-compatible list +# The "Map" number refers to the location in the "Contiguous US Map with Alaska and Hawaii insets". The main map is 1, hawaii is 2 and alaska is 3 +usa_capitols = [ + {"state": "Alabama", "location": "Montgomery", "coordinates": {"lat": 32.361538, "lon": -86.279118}, "map": 1}, + {"state": "Alaska", "location": "Juneau", "coordinates": {"lat": 58.301935, "lon": -134.419740}, "map": 3}, + {"state": "Arizona", "location": "Phoenix", "coordinates": {"lat": 33.448457, "lon": -112.073844}, "map": 1}, + {"state": "Arkansas", "location": "Little Rock", "coordinates": {"lat": 34.736009, "lon": -92.331122}, "map": 1}, + {"state": "California", "location": "Sacramento", "coordinates": {"lat": 38.555605, "lon": -121.468926}, "map": 1}, + {"state": "Colorado", "location": "Denver", "coordinates": {"lat": 39.739167, "lon": -104.984167}, "map": 1}, + {"state": "Connecticut", "location": "Hartford", "coordinates": {"lat": 41.767000, "lon": -72.677000}, "map": 1}, + {"state": "Delaware", "location": "Dover", "coordinates": {"lat": 39.161921, "lon": -75.526755}, "map": 1}, + {"state": "Florida", "location": "Tallahassee", "coordinates": {"lat": 30.451800, "lon": -84.272770}, "map": 1}, + {"state": "Georgia", "location": "Atlanta", "coordinates": {"lat": 33.760000, "lon": -84.390000}, "map": 1}, + {"state": "Hawaii", "location": "Honolulu", "coordinates": {"lat": 21.308950, "lon": -157.826182}, "map": 2}, + {"state": "Idaho", "location": "Boise", "coordinates": {"lat": 43.613739, "lon": -116.237651}, "map": 1}, + {"state": "Illinois", "location": "Springfield", "coordinates": {"lat": 39.783250, "lon": -89.650373}, "map": 1}, + {"state": "Indiana", "location": "Indianapolis", "coordinates": {"lat": 39.790942, "lon": -86.147685}, "map": 1}, + {"state": "Iowa", "location": "Des Moines", "coordinates": {"lat": 41.590939, "lon": -93.620866}, "map": 1}, + {"state": "Kansas", "location": "Topeka", "coordinates": {"lat": 39.040000, "lon": -95.690000}, "map": 1}, + {"state": "Kentucky", "location": "Frankfort", "coordinates": {"lat": 38.197274, "lon": -84.863110}, "map": 1}, + {"state": "Louisiana", "location": "Baton Rouge", "coordinates": {"lat": 30.458090, "lon": -91.140229}, "map": 1}, + {"state": "Maine", "location": "Augusta", "coordinates": {"lat": 44.323535, "lon": -69.765261}, "map": 1}, + {"state": "Maryland", "location": "Annapolis", "coordinates": {"lat": 38.972945, "lon": -76.501157}, "map": 1}, + {"state": "Massachusetts", "location": "Boston", "coordinates": {"lat": 42.235200, "lon": -71.027500}, "map": 1}, + {"state": "Michigan", "location": "Lansing", "coordinates": {"lat": 42.733500, "lon": -84.546700}, "map": 1}, + {"state": "Minnesota", "location": "Saint Paul", "coordinates": {"lat": 44.950000, "lon": -93.094000}, "map": 1}, + {"state": "Mississippi", "location": "Jackson", "coordinates": {"lat": 32.320000, "lon": -90.207000}, "map": 1}, + {"state": "Missouri", "location": "Jefferson City", "coordinates": {"lat": 38.572954, "lon": -92.189283}, "map": 1}, + {"state": "Montana", "location": "Helena", "coordinates": {"lat": 46.595805, "lon": -112.027031}, "map": 1}, + {"state": "Nebraska", "location": "Lincoln", "coordinates": {"lat": 40.809868, "lon": -96.675345}, "map": 1}, + {"state": "Nevada", "location": "Carson City", "coordinates": {"lat": 39.160949, "lon": -119.753877}, "map": 1}, + {"state": "New Hampshire", "location": "Concord", "coordinates": {"lat": 43.220093, "lon": -71.549127}, "map": 1}, + {"state": "New Jersey", "location": "Trenton", "coordinates": {"lat": 40.221741, "lon": -74.756138}, "map": 1}, + {"state": "New Mexico", "location": "Santa Fe", "coordinates": {"lat": 35.667231, "lon": -105.964575}, "map": 1}, + {"state": "New York", "location": "Albany", "coordinates": {"lat": 42.659829, "lon": -73.781339}, "map": 1}, + {"state": "North Carolina", "location": "Raleigh", "coordinates": {"lat": 35.771000, "lon": -78.638000}, "map": 1}, + {"state": "North Dakota", "location": "Bismarck", "coordinates": {"lat": 48.813343, "lon": -100.779004}, "map": 1}, + {"state": "Ohio", "location": "Columbus", "coordinates": {"lat": 39.962245, "lon": -83.000647}, "map": 1}, + {"state": "Oklahoma", "location": "Oklahoma City", "coordinates": {"lat": 35.482309, "lon": -97.534994}, "map": 1}, + {"state": "Oregon", "location": "Salem", "coordinates": {"lat": 44.931109, "lon": -123.029159}, "map": 1}, + {"state": "Pennsylvania", "location": "Harrisburg", "coordinates": {"lat": 40.269789, "lon": -76.875613}, "map": 1}, + {"state": "Rhode Island", "location": "Providence", "coordinates": {"lat": 41.823550, "lon": -71.422132}, "map": 1}, + {"state": "South Carolina", "location": "Columbia", "coordinates": {"lat": 34.000000, "lon": -81.035000}, "map": 1}, + {"state": "South Dakota", "location": "Pierre", "coordinates": {"lat": 44.367966, "lon": -100.336378}, "map": 1}, + {"state": "Tennessee", "location": "Nashville", "coordinates": {"lat": 36.165000, "lon": -86.784000}, "map": 1}, + {"state": "Texas", "location": "Austin", "coordinates": {"lat": 30.266667, "lon": -97.750000}, "map": 1}, + {"state": "Utah", "location": "Salt Lake City", "coordinates": {"lat": 40.754700, "lon": -111.892622}, "map": 1}, + {"state": "Vermont", "location": "Montpelier", "coordinates": {"lat": 44.266390, "lon": -72.571940}, "map": 1}, + {"state": "Virginia", "location": "Richmond", "coordinates": {"lat": 37.540000, "lon": -77.460000}, "map": 1}, + {"state": "Washington", "location": "Olympia", "coordinates": {"lat": 47.042418, "lon": -122.893077}, "map": 1}, + {"state": "West Virginia", "location": "Charleston", "coordinates": {"lat": 38.349497, "lon": -81.633294}, "map": 1}, + {"state": "Wisconsin", "location": "Madison", "coordinates": {"lat": 43.074722, "lon": -89.384444}, "map": 1}, + {"state": "Wyoming", "location": "Cheyenne", "coordinates": {"lat": 41.145548, "lon": -104.802042}, "map": 1}, +] + +usa_national_parks = [ + {"state": "Alaska", "park": "Denali National Park", "coordinates": {"lat": 63.33, "lon": -150.50}, "map": 3}, + {"state": "Alaska", "park": "Gates of the Arctic National Park", "coordinates": {"lat": 67.78, "lon": -153.30}, "map": 3}, + {"state": "Alaska", "park": "Glacier Bay National Park", "coordinates": {"lat": 58.67, "lon": -136.90}, "map": 3}, + {"state": "Alaska", "park": "Katmai National Park", "coordinates": {"lat": 58.50, "lon": -155.00}, "map": 3}, + {"state": "Alaska", "park": "Kenai Fjords National Park", "coordinates": {"lat": 60.00, "lon": -149.65}, "map": 3}, + {"state": "Alaska", "park": "Kobuk Valley National Park", "coordinates": {"lat": 67.55, "lon": -159.28}, "map": 3}, + {"state": "Alaska", "park": "Lake Clark National Park", "coordinates": {"lat": 60.97, "lon": -153.42}, "map": 3}, + {"state": "Alaska", "park": "Wrangell–St. Elias National Park", "coordinates": {"lat": 61.00, "lon": -142.00}, "map": 3}, + #{"state": "American Samoa", "park": "National Park of American Samoa", "coordinates": {"lat": -14.25, "lon": -170.68}, "map": 4}, + {"state": "Arizona", "park": "Grand Canyon National Park", "coordinates": {"lat": 36.11, "lon": -112.11}, "map": 1}, + {"state": "Arizona", "park": "Petrified Forest National Park", "coordinates": {"lat": 35.07, "lon": -109.78}, "map": 1}, + {"state": "Arizona", "park": "Saguaro National Park", "coordinates": {"lat": 32.25, "lon": -110.50}, "map": 1}, + {"state": "Arkansas", "park": "Hot Springs National Park", "coordinates": {"lat": 34.51, "lon": -93.05}, "map": 1}, + {"state": "California", "park": "Channel Islands National Park", "coordinates": {"lat": 34.01, "lon": -119.42}, "map": 1}, + {"state": "California", "park": "Death Valley National Park", "coordinates": {"lat": 36.24, "lon": -116.82}, "map": 1}, + {"state": "California", "park": "Joshua Tree National Park", "coordinates": {"lat": 33.79, "lon": -115.90}, "map": 1}, + {"state": "California", "park": "Kings Canyon National Park", "coordinates": {"lat": 36.80, "lon": -118.55}, "map": 1}, + {"state": "California", "park": "Lassen Volcanic National Park", "coordinates": {"lat": 40.49, "lon": -121.51}, "map": 1}, + {"state": "California", "park": "Pinnacles National Park", "coordinates": {"lat": 36.48, "lon": -121.16}, "map": 1}, + {"state": "California", "park": "Redwood National Park", "coordinates": {"lat": 41.30, "lon": -124.00}, "map": 1}, + {"state": "California", "park": "Sequoia National Park", "coordinates": {"lat": 36.43, "lon": -118.68}, "map": 1}, + {"state": "California", "park": "Yosemite National Park", "coordinates": {"lat": 37.83, "lon": -119.50}, "map": 1}, + {"state": "Colorado", "park": "Black Canyon of the Gunnison National Park", "coordinates": {"lat": 38.57, "lon": -107.72}, "map": 1}, + {"state": "Colorado", "park": "Great Sand Dunes National Park", "coordinates": {"lat": 37.73, "lon": -105.51}, "map": 1}, + {"state": "Colorado", "park": "Mesa Verde National Park", "coordinates": {"lat": 37.18, "lon": -108.49}, "map": 1}, + {"state": "Colorado", "park": "Rocky Mountain National Park", "coordinates": {"lat": 40.35, "lon": -105.68}, "map": 1}, + {"state": "Florida", "park": "Biscayne National Park", "coordinates": {"lat": 25.65, "lon": -80.08}, "map": 1}, + {"state": "Florida", "park": "Dry Tortugas National Park", "coordinates": {"lat": 24.63, "lon": -82.87}, "map": 1}, + {"state": "Florida", "park": "Everglades National Park", "coordinates": {"lat": 25.32, "lon": -80.93}, "map": 1}, + {"state": "Hawaii", "park": "Haleakalā National Park", "coordinates": {"lat": 20.72, "lon": -156.17}, "map": 2}, + {"state": "Hawaii", "park": "Hawai'i Volcanoes National Park", "coordinates": {"lat": 19.38, "lon": -155.20}, "map": 2}, + {"state": "Idaho", "park": "Yellowstone National Park", "coordinates": {"lat": 44.60, "lon": -110.50}, "map": 1}, + {"state": "Indiana", "park": "Indiana Dunes National Park", "coordinates": {"lat": 41.65, "lon": -87.06}, "map": 1}, + {"state": "Kentucky", "park": "Mammoth Cave National Park", "coordinates": {"lat": 37.18, "lon": -86.10}, "map": 1}, + {"state": "Maine", "park": "Acadia National Park", "coordinates": {"lat": 44.35, "lon": -68.21}, "map": 1}, + {"state": "Michigan", "park": "Isle Royale National Park", "coordinates": {"lat": 47.99, "lon": -88.91}, "map": 1}, + {"state": "Minnesota", "park": "Voyageurs National Park", "coordinates": {"lat": 48.50, "lon": -92.88}, "map": 1}, + {"state": "Missouri", "park": "Gateway Arch National Park", "coordinates": {"lat": 38.63, "lon": -90.19}, "map": 1}, + {"state": "Montana", "park": "Glacier National Park", "coordinates": {"lat": 48.70, "lon": -113.72}, "map": 1}, + {"state": "Montana", "park": "Yellowstone National Park", "coordinates": {"lat": 44.60, "lon": -110.50}, "map": 1}, + {"state": "Nevada", "park": "Great Basin National Park", "coordinates": {"lat": 38.98, "lon": -114.30}, "map": 1}, + {"state": "New Mexico", "park": "Carlsbad Caverns National Park", "coordinates": {"lat": 32.17, "lon": -104.44}, "map": 1}, + {"state": "New Mexico", "park": "White Sands National Park", "coordinates": {"lat": 32.78, "lon": -106.17}, "map": 1}, + {"state": "North Carolina", "park": "Great Smoky Mountains National Park", "coordinates": {"lat": 35.68, "lon": -83.53}, "map": 1}, + {"state": "North Dakota", "park": "Theodore Roosevelt National Park", "coordinates": {"lat": 46.98, "lon": -103.45}, "map": 1}, + {"state": "Ohio", "park": "Cuyahoga Valley National Park", "coordinates": {"lat": 41.24, "lon": -81.55}, "map": 1}, + {"state": "Oregon", "park": "Crater Lake National Park", "coordinates": {"lat": 42.94, "lon": -122.10}, "map": 1}, + {"state": "South Carolina", "park": "Congaree National Park", "coordinates": {"lat": 33.78, "lon": -80.78}, "map": 1}, + {"state": "South Dakota", "park": "Badlands National Park", "coordinates": {"lat": 43.75, "lon": -102.50}, "map": 1}, + {"state": "South Dakota", "park": "Wind Cave National Park", "coordinates": {"lat": 43.57, "lon": -103.48}, "map": 1}, + {"state": "Tennessee", "park": "Great Smoky Mountains National Park", "coordinates": {"lat": 35.68, "lon": -83.53}, "map": 1}, + {"state": "Texas", "park": "Big Bend National Park", "coordinates": {"lat": 29.25, "lon": -103.25}, "map": 1}, + {"state": "Texas", "park": "Guadalupe Mountains National Park", "coordinates": {"lat": 31.92, "lon": -104.87}, "map": 1}, + {"state": "Utah", "park": "Arches National Park", "coordinates": {"lat": 38.68, "lon": -109.57}, "map": 1}, + {"state": "Utah", "park": "Bryce Canyon National Park", "coordinates": {"lat": 37.57, "lon": -112.18}, "map": 1}, + {"state": "Utah", "park": "Canyonlands National Park", "coordinates": {"lat": 38.20, "lon": -109.93}, "map": 1}, + {"state": "Utah", "park": "Capitol Reef National Park", "coordinates": {"lat": 38.20, "lon": -111.17}, "map": 1}, + {"state": "Utah", "park": "Zion National Park", "coordinates": {"lat": 37.30, "lon": -113.05}, "map": 1}, + {"state": "Virginia", "park": "Shenandoah National Park", "coordinates": {"lat": 38.53, "lon": -78.35}, "map": 1}, + {"state": "Virgin Islands", "park": "Virgin Islands National Park", "coordinates": {"lat": 18.33, "lon": -64.73}, "map": 1}, + {"state": "Washington", "park": "Mount Rainier National Park", "coordinates": {"lat": 46.85, "lon": -121.76}, "map": 1}, + {"state": "Washington", "park": "North Cascades National Park", "coordinates": {"lat": 48.77, "lon": -121.30}, "map": 1}, + {"state": "Washington", "park": "Olympic National Park", "coordinates": {"lat": 47.97, "lon": -123.50}, "map": 1}, + {"state": "West Virginia", "park": "New River Gorge National Park", "coordinates": {"lat": 38.05, "lon": -81.08}, "map": 1}, + {"state": "Wyoming", "park": "Grand Teton National Park", "coordinates": {"lat": 43.73, "lon": -110.80}, "map": 1}, + {"state": "Wyoming", "park": "Yellowstone National Park", "coordinates": {"lat": 44.60, "lon": -110.50}, "map": 1}, +] + +world_heritage_sites = [ + {"state": "Alaska", "site": "Glacier Bay", "coordinates": {"lat": 60.00, "lon": -140.00}, "map": 3}, + {"state": "Arizona", "site": "Grand Canyon National Park", "coordinates": {"lat": 36.11, "lon": -112.11}, "map": 1}, + {"state": "California", "site": "Redwood National and State Parks", "coordinates": {"lat": 41.30, "lon": -124.00}, "map": 1}, + {"state": "California", "site": "Yosemite National Park", "coordinates": {"lat": 37.83, "lon": -119.50}, "map": 1}, + {"state": "Colorado", "site": "Mesa Verde National Park", "coordinates": {"lat": 37.18, "lon": -108.49}, "map": 1}, + {"state": "Florida", "site": "Everglades National Park", "coordinates": {"lat": 25.32, "lon": -80.93}, "map": 1}, + {"state": "Hawaii", "site": "Hawai'i Volcanoes National Park", "coordinates": {"lat": 19.38, "lon": -155.20}, "map": 2}, + {"state": "Hawaii", "site": "Papahānaumokuākea", "coordinates": {"lat": 22.9, "lon": -160.5}, "map": 2}, + {"state": "Illinois", "site": "Cahokia Mounds State Historic Site", "coordinates": {"lat": 38.65, "lon": -90.06}, "map": 1}, + {"state": "Illinois", "site": "Architecture of Frank Lloyd Wright", "coordinates": {"lat": 41.88, "lon": -87.63}, "map": 1}, + {"state": "Kentucky", "site": "Mammoth Cave National Park", "coordinates": {"lat": 37.18, "lon": -86.10}, "map": 1}, + {"state": "Louisiana", "site": "Monumental Earthworks of Poverty Point", "coordinates": {"lat": 32.63, "lon": -91.41}, "map": 1}, + {"state": "Montana", "site": "Waterton-Glacier International Peace Park", "coordinates": {"lat": 48.99, "lon": -113.91}, "map": 1}, + {"state": "New Mexico", "site": "Carlsbad Caverns National Park", "coordinates": {"lat": 32.17, "lon": -104.44}, "map": 1}, + {"state": "New Mexico", "site": "Chaco Culture", "coordinates": {"lat": 36.06, "lon": -107.97}, "map": 1}, + {"state": "New Mexico", "site": "Taos Pueblo", "coordinates": {"lat": 36.44, "lon": -105.54}, "map": 1}, + {"state": "New York", "site": "Statue of Liberty", "coordinates": {"lat": 40.6892, "lon": -74.0445}, "map": 1}, + {"state": "Ohio", "site": "Hopewell Ceremonial Earthworks", "coordinates": {"lat": 39.38, "lon": -82.98}, "map": 1}, + {"state": "Pennsylvania", "site": "Historic Moravian Bethlehem District", "coordinates": {"lat": 40.62, "lon": -75.38}, "map": 1}, + {"state": "Pennsylvania", "site": "Independence Hall", "coordinates": {"lat": 39.9489, "lon": -75.1500}, "map": 1}, + {"state": "Pennsylvania", "site": "Moravian Church Settlements", "coordinates": {"lat": 40.62, "lon": -75.38}, "map": 1}, + #{"state": "Puerto Rico", "site": "La Fortaleza and San Juan National Historic Site", "coordinates": {"lat": 18.47, "lon": -66.12}, "map": 1}, + {"state": "Texas", "site": "San Antonio Missions", "coordinates": {"lat": 29.36, "lon": -98.48}, "map": 1}, + {"state": "Virginia", "site": "Monticello and the University of Virginia", "coordinates": {"lat": 38.03, "lon": -78.50}, "map": 1}, + {"state": "Wyoming", "site": "Yellowstone National Park", "coordinates": {"lat": 44.60, "lon": -110.50}, "map": 1}, +] + +presidential_libraries = [ + {"state": "Iowa", "site": "Herbert Hoover Presidential Library", "coordinates": {"lat": 41.6719, "lon": -91.3469}, "map": 1}, + {"state": "New York", "site": "Franklin D. Roosevelt Presidential Library", "coordinates": {"lat": 41.7675, "lon": -73.9318}, "map": 1}, + {"state": "Missouri", "site": "Harry S. Truman Presidential Library", "coordinates": {"lat": 39.0917, "lon": -94.4156}, "map": 1}, + {"state": "Kansas", "site": "Dwight D. Eisenhower Presidential Library", "coordinates": {"lat": 38.9170, "lon": -97.2137}, "map": 1}, + {"state": "Massachusetts", "site": "John F. Kennedy Presidential Library", "coordinates": {"lat": 42.3161, "lon": -71.0347}, "map": 1}, + {"state": "Texas", "site": "Lyndon Baines Johnson Presidential Library", "coordinates": {"lat": 30.2861, "lon": -97.7294}, "map": 1}, + {"state": "California", "site": "Richard Nixon Presidential Library", "coordinates": {"lat": 33.8898, "lon": -117.8151}, "map": 1}, + {"state": "Michigan", "site": "Gerald R. Ford Presidential Library", "coordinates": {"lat": 42.2808, "lon": -83.7382}, "map": 1}, + {"state": "Georgia", "site": "Jimmy Carter Presidential Library", "coordinates": {"lat": 33.7640, "lon": -84.3580}, "map": 1}, + {"state": "California", "site": "Ronald Reagan Presidential Library", "coordinates": {"lat": 34.2590, "lon": -118.8190}, "map": 1}, + {"state": "Texas", "site": "George Bush Presidential Library", "coordinates": {"lat": 30.6100, "lon": -96.3450}, "map": 1}, + {"state": "Arkansas", "site": "William J. Clinton Presidential Library", "coordinates": {"lat": 34.7453, "lon": -92.2600}, "map": 1}, + {"state": "Texas", "site": "George W. Bush Presidential Library", "coordinates": {"lat": 32.8412, "lon": -96.7853}, "map": 1}, + {"state": "Illinois", "site": "Obama Presidential Center", "coordinates": {"lat": 41.7861, "lon": -87.6032}, "map": 1}, +] \ No newline at end of file From 50c92af58189aada3fc4cb07e90e4649948fdcc8 Mon Sep 17 00:00:00 2001 From: Robert Ison Date: Sun, 26 Jul 2026 23:56:36 -0400 Subject: [PATCH 14/18] Move data into separate file. --- apps/americanmapbook/americanmapbook.star | 1973 +-------------------- 1 file changed, 36 insertions(+), 1937 deletions(-) diff --git a/apps/americanmapbook/americanmapbook.star b/apps/americanmapbook/americanmapbook.star index 121e54961..5699c1c3b 100644 --- a/apps/americanmapbook/americanmapbook.star +++ b/apps/americanmapbook/americanmapbook.star @@ -7,1944 +7,10 @@ Author: Robert Ison load("render.star", "canvas", "render") load("schema.star", "schema") +load("americanmapbook_data.star", "usa_map_data", "usa_capitols", "usa_national_parks", "world_heritage_sites", "presidential_libraries") DEFAULT_COLORS = ["#009A17", "#708090", "#FFD700"] #map, unvisited, visited -# USA JSON structure -usa_map_data = { - "coordinates": [ - [ - [ - [ - -122.84, - 49.000000000000114, - ], - [ - -120, - 49.000000000000114, - ], - [ - -117.03121, - 49, - ], - [ - -116.04818, - 49, - ], - [ - -113, - 49, - ], - [ - -110.05, - 49, - ], - [ - -107.05, - 49, - ], - [ - -104.04826, - 48.99986, - ], - [ - -100.65, - 49.000000000000114, - ], - [ - -97.2287200000048, - 49.0007, - ], - [ - -95.15906950917206, - 49, - ], - [ - -95.15609, - 49.38425, - ], - [ - -94.81758, - 49.38905, - ], - [ - -94.64, - 48.84, - ], - [ - -94.32914, - 48.67074, - ], - [ - -93.63087, - 48.60926, - ], - [ - -92.61, - 48.45, - ], - [ - -91.64, - 48.14, - ], - [ - -90.83, - 48.27, - ], - [ - -89.6, - 48.010000000000105, - ], - [ - -89.27291744663665, - 48.01980825458281, - ], - [ - -88.37811418328671, - 48.302917588893706, - ], - [ - -87.43979262330028, - 47.94, - ], - [ - -86.46199083122826, - 47.553338019392, - ], - [ - -85.65236324740341, - 47.22021881773051, - ], - [ - -84.8760798815149, - 46.90008331968238, - ], - [ - -84.77923824739992, - 46.63710195574902, - ], - [ - -84.54374874544584, - 46.538684190449146, - ], - [ - -84.6049, - 46.4396, - ], - [ - -84.3367, - 46.40877, - ], - [ - -84.1421195136734, - 46.51222585711571, - ], - [ - -84.0918512641615, - 46.27541860613826, - ], - [ - -83.89076534700574, - 46.116926988299014, - ], - [ - -83.61613094759059, - 46.116926988299014, - ], - [ - -83.46955074739469, - 45.994686387712534, - ], - [ - -83.59285071484311, - 45.81689362241252, - ], - [ - -82.55092464875821, - 45.34751658790543, - ], - [ - -82.33776312543114, - 44.44, - ], - [ - -82.13764238150395, - 43.57108755143997, - ], - [ - -82.43, - 42.98, - ], - [ - -82.9, - 42.43, - ], - [ - -83.12, - 42.08, - ], - [ - -83.14199968131264, - 41.975681057292874, - ], - [ - -83.029810146807, - 41.83279572200598, - ], - [ - -82.69008928092023, - 41.675105088867326, - ], - [ - -82.4392777167916, - 41.675105088867326, - ], - [ - -81.27774654816716, - 42.209025987306816, - ], - [ - -80.24744767934794, - 42.36619985612255, - ], - [ - -78.93936214874375, - 42.86361135514798, - ], - [ - -78.92, - 42.965, - ], - [ - -79.01, - 43.27, - ], - [ - -79.17167355011186, - 43.46633942318426, - ], - [ - -78.72027991404235, - 43.62508942318493, - ], - [ - -77.7378850979577, - 43.62905558936328, - ], - [ - -76.82003414580558, - 43.628784288093755, - ], - [ - -76.5, - 44.01845889375865, - ], - [ - -76.375, - 44.09631, - ], - [ - -75.31821, - 44.81645, - ], - [ - -74.867, - 45.00048, - ], - [ - -73.34783, - 45.00738, - ], - [ - -71.50506, - 45.0082, - ], - [ - -71.405, - 45.255, - ], - [ - -71.08482, - 45.30524000000014, - ], - [ - -70.66, - 45.46, - ], - [ - -70.305, - 45.915, - ], - [ - -69.99997, - 46.69307, - ], - [ - -69.237216, - 47.447781, - ], - [ - -68.905, - 47.185, - ], - [ - -68.23444, - 47.35486, - ], - [ - -67.79046, - 47.06636, - ], - [ - -67.79134, - 45.70281, - ], - [ - -67.13741, - 45.13753, - ], - [ - -66.96466, - 44.809700000000134, - ], - [ - -68.03252, - 44.3252, - ], - [ - -69.06, - 43.98, - ], - [ - -70.11617, - 43.68405000000013, - ], - [ - -70.64547563341102, - 43.09023834896402, - ], - [ - -70.81489, - 42.8653, - ], - [ - -70.825, - 42.335, - ], - [ - -70.495, - 41.805, - ], - [ - -70.08, - 41.78, - ], - [ - -70.185, - 42.145, - ], - [ - -69.88497, - 41.92283, - ], - [ - -69.96503, - 41.63717000000014, - ], - [ - -70.64, - 41.475, - ], - [ - -71.12039, - 41.49445000000014, - ], - [ - -71.86, - 41.32, - ], - [ - -72.295, - 41.27, - ], - [ - -72.87643, - 41.22065, - ], - [ - -73.71, - 40.93110235165449, - ], - [ - -72.24126, - 41.119480000000124, - ], - [ - -71.94499999999988, - 40.93, - ], - [ - -73.345, - 40.63, - ], - [ - -73.982, - 40.628, - ], - [ - -73.952325, - 40.75075, - ], - [ - -74.25671, - 40.47351, - ], - [ - -73.96244, - 40.42763, - ], - [ - -74.17838, - 39.70926, - ], - [ - -74.90604, - 38.93954, - ], - [ - -74.98041, - 39.1964, - ], - [ - -75.20002, - 39.248450000000105, - ], - [ - -75.52805, - 39.4985, - ], - [ - -75.32, - 38.96, - ], - [ - -75.07183476478986, - 38.782032230179254, - ], - [ - -75.05673, - 38.40412, - ], - [ - -75.37747, - 38.01551, - ], - [ - -75.94023, - 37.21689, - ], - [ - -76.03127, - 37.2566, - ], - [ - -75.72204999999985, - 37.93705000000011, - ], - [ - -76.23287, - 38.319215, - ], - [ - -76.35, - 39.15, - ], - [ - -76.542725, - 38.717615, - ], - [ - -76.32933, - 38.08326, - ], - [ - -76.98999793161352, - 38.23999176691336, - ], - [ - -76.30162, - 37.917945, - ], - [ - -76.25874, - 36.9664, - ], - [ - -75.9718, - 36.89726, - ], - [ - -75.8680399999999, - 36.55125, - ], - [ - -75.72749, - 35.55074000000013, - ], - [ - -76.36318, - 34.80854000000011, - ], - [ - -77.397635, - 34.51201, - ], - [ - -78.05496, - 33.92547, - ], - [ - -78.55434999999989, - 33.86133000000012, - ], - [ - -79.06067, - 33.49395, - ], - [ - -79.20357, - 33.15839, - ], - [ - -80.301325, - 32.509355, - ], - [ - -80.86498, - 32.0333, - ], - [ - -81.33629, - 31.44049, - ], - [ - -81.49042, - 30.7299900000001, - ], - [ - -81.31371, - 30.03552, - ], - [ - -80.98, - 29.18000000000012, - ], - [ - -80.535585, - 28.47213, - ], - [ - -80.52999999999986, - 28.04, - ], - [ - -80.05653928497759, - 26.88000000000011, - ], - [ - -80.088015, - 26.205765, - ], - [ - -80.13156, - 25.816775, - ], - [ - -80.38103, - 25.20616, - ], - [ - -80.68, - 25.08, - ], - [ - -81.17213, - 25.201260000000104, - ], - [ - -81.33, - 25.64, - ], - [ - -81.70999999999987, - 25.87, - ], - [ - -82.24, - 26.730000000000132, - ], - [ - -82.70515, - 27.49504, - ], - [ - -82.85526, - 27.88624, - ], - [ - -82.65, - 28.550000000000125, - ], - [ - -82.93, - 29.1, - ], - [ - -83.70959, - 29.93656, - ], - [ - -84.1, - 30.09, - ], - [ - -85.10882, - 29.63615, - ], - [ - -85.28784, - 29.68612000000013, - ], - [ - -85.7731, - 30.15261, - ], - [ - -86.4, - 30.4, - ], - [ - -87.53036, - 30.27433, - ], - [ - -88.41782, - 30.3849, - ], - [ - -89.18049, - 30.31598, - ], - [ - -89.5938311784198, - 30.159994004836847, - ], - [ - -89.413735, - 29.89419, - ], - [ - -89.43, - 29.48864, - ], - [ - -89.21767, - 29.29108, - ], - [ - -89.40823, - 29.15961, - ], - [ - -89.77928, - 29.307140000000118, - ], - [ - -90.15463, - 29.11743, - ], - [ - -90.880225, - 29.148535, - ], - [ - -91.626785, - 29.677000000000135, - ], - [ - -92.49906, - 29.5523, - ], - [ - -93.22637, - 29.78375, - ], - [ - -93.84842, - 29.71363, - ], - [ - -94.69, - 29.480000000000132, - ], - [ - -95.60026, - 28.73863, - ], - [ - -96.59404, - 28.30748, - ], - [ - -97.13999999999987, - 27.83, - ], - [ - -97.37, - 27.38, - ], - [ - -97.38, - 26.69, - ], - [ - -97.33, - 26.21, - ], - [ - -97.13999999999987, - 25.87, - ], - [ - -97.53, - 25.84, - ], - [ - -98.24, - 26.06, - ], - [ - -99.02, - 26.37, - ], - [ - -99.3, - 26.84, - ], - [ - -99.52, - 27.54, - ], - [ - -100.11, - 28.110000000000127, - ], - [ - -100.45584, - 28.69612000000012, - ], - [ - -100.9576, - 29.380710000000136, - ], - [ - -101.6624, - 29.7793, - ], - [ - -102.48, - 29.76, - ], - [ - -103.11, - 28.97, - ], - [ - -103.94, - 29.27, - ], - [ - -104.4569699999999, - 29.57196, - ], - [ - -104.70575, - 30.12173, - ], - [ - -105.03737, - 30.64402, - ], - [ - -105.63159, - 31.08383, - ], - [ - -106.1429, - 31.39995, - ], - [ - -106.50758999999988, - 31.75452, - ], - [ - -108.24, - 31.754853718166373, - ], - [ - -108.24194, - 31.34222, - ], - [ - -109.035, - 31.341940000000136, - ], - [ - -111.02361, - 31.33472, - ], - [ - -113.30498, - 32.03914, - ], - [ - -114.815, - 32.52528, - ], - [ - -114.72139, - 32.72083, - ], - [ - -115.99135, - 32.61239000000012, - ], - [ - -117.12775999999985, - 32.53534, - ], - [ - -117.29593769127393, - 33.04622461520387, - ], - [ - -117.944, - 33.621236431201396, - ], - [ - -118.41060227589753, - 33.74090922312445, - ], - [ - -118.51989482279976, - 34.02778157757575, - ], - [ - -119.081, - 34.078, - ], - [ - -119.43884064201671, - 34.34847717828427, - ], - [ - -120.36778, - 34.44711, - ], - [ - -120.62286, - 34.60855, - ], - [ - -120.74433, - 35.15686000000011, - ], - [ - -121.71457, - 36.16153, - ], - [ - -122.54747, - 37.551760000000115, - ], - [ - -122.51201, - 37.78339000000011, - ], - [ - -122.95319, - 38.11371, - ], - [ - -123.7272, - 38.95166000000012, - ], - [ - -123.86517, - 39.76699, - ], - [ - -124.39807, - 40.3132, - ], - [ - -124.17886, - 41.142020000000116, - ], - [ - -124.2137, - 41.99964000000011, - ], - [ - -124.53284, - 42.7659900000001, - ], - [ - -124.14214, - 43.70838, - ], - [ - -124.020535, - 44.615895, - ], - [ - -123.89893, - 45.52341, - ], - [ - -124.079635, - 46.86475, - ], - [ - -124.39567, - 47.72017000000011, - ], - [ - -124.68721008300781, - 48.18443298339855, - ], - [ - -124.56610107421875, - 48.37971496582037, - ], - [ - -123.12, - 48.04, - ], - [ - -122.58736, - 47.096, - ], - [ - -122.34, - 47.36, - ], - [ - -122.5, - 48.18, - ], - [ - -122.84, - 49.000000000000114, - ], - ], - ], - [ - [ - [ - -155.40214, - 20.07975, - ], - [ - -155.22452, - 19.99302, - ], - [ - -155.06226, - 19.8591, - ], - [ - -154.80741, - 19.50871, - ], - [ - -154.83147, - 19.45328, - ], - [ - -155.22217, - 19.23972, - ], - [ - -155.54211, - 19.08348, - ], - [ - -155.68817, - 18.91619, - ], - [ - -155.93665, - 19.05939, - ], - [ - -155.90806, - 19.33888, - ], - [ - -156.07347, - 19.70294, - ], - [ - -156.02368, - 19.81422, - ], - [ - -155.85008, - 19.97729, - ], - [ - -155.91907, - 20.17395, - ], - [ - -155.86108, - 20.26721, - ], - [ - -155.78505, - 20.2487, - ], - [ - -155.40214, - 20.07975, - ], - ], - ], - [ - [ - [ - -155.99566, - 20.76404, - ], - [ - -156.07926, - 20.64397, - ], - [ - -156.41445, - 20.57241, - ], - [ - -156.58673, - 20.783, - ], - [ - -156.70167, - 20.8643, - ], - [ - -156.71055, - 20.92676, - ], - [ - -156.61258, - 21.01249, - ], - [ - -156.25711, - 20.91745, - ], - [ - -155.99566, - 20.76404, - ], - ], - ], - [ - [ - [ - -156.75824, - 21.17684, - ], - [ - -156.78933, - 21.06873, - ], - [ - -157.32521, - 21.09777, - ], - [ - -157.25027, - 21.21958, - ], - [ - -156.75824, - 21.17684, - ], - ], - ], - [ - [ - [ - -158.0252, - 21.71696, - ], - [ - -157.94161, - 21.65272, - ], - [ - -157.65283, - 21.32217, - ], - [ - -157.70703, - 21.26442, - ], - [ - -157.7786, - 21.27729, - ], - [ - -158.12667, - 21.31244, - ], - [ - -158.2538, - 21.53919, - ], - [ - -158.29265, - 21.57912, - ], - [ - -158.0252, - 21.71696, - ], - ], - ], - [ - [ - [ - -159.36569, - 22.21494, - ], - [ - -159.34512, - 21.982, - ], - [ - -159.46372, - 21.88299, - ], - [ - -159.80051, - 22.06533, - ], - [ - -159.74877, - 22.1382, - ], - [ - -159.5962, - 22.23618, - ], - [ - -159.36569, - 22.21494, - ], - ], - ], - [ - [ - [ - -166.46779212142462, - 60.384169826897754, - ], - [ - -165.67442969466364, - 60.29360687930625, - ], - [ - -165.57916419173358, - 59.90998688418753, - ], - [ - -166.19277014876727, - 59.75444082298899, - ], - [ - -166.84833736882197, - 59.941406155020985, - ], - [ - -167.45527706609008, - 60.21306915957936, - ], - [ - -166.46779212142462, - 60.384169826897754, - ], - ], - ], - [ - [ - [ - -153.22872941792113, - 57.96896841087248, - ], - [ - -152.56479061583514, - 57.901427313866996, - ], - [ - -152.1411472239064, - 57.591058661522, - ], - [ - -153.00631405333692, - 57.11584219016593, - ], - [ - -154.0050902984581, - 56.734676825581076, - ], - [ - -154.51640275777004, - 56.99274892844669, - ], - [ - -154.67099280497118, - 57.46119578717253, - ], - [ - -153.7627795074415, - 57.81657461204373, - ], - [ - -153.22872941792113, - 57.96896841087248, - ], - ], - ], - [ - [ - [ - -140.98598761037601, - 69.71199839952635, - ], - [ - -140.986, - 69.712, - ], - [ - -140.9925, - 66.00003, - ], - [ - -140.99778, - 60.30639, - ], - [ - -140.013, - 60.27682, - ], - [ - -139.039, - 60, - ], - [ - -138.34089, - 59.56211, - ], - [ - -137.4525, - 58.905, - ], - [ - -136.47972, - 59.46389, - ], - [ - -135.47583, - 59.78778, - ], - [ - -134.945, - 59.2705600000001, - ], - [ - -134.27111, - 58.86111, - ], - [ - -133.35556, - 58.41028, - ], - [ - -132.73042, - 57.69289, - ], - [ - -131.70781, - 56.55212, - ], - [ - -130.00778, - 55.91583, - ], - [ - -129.98, - 55.285, - ], - [ - -130.53611, - 54.80278, - ], - [ - -130.53610895273684, - 54.80275447679924, - ], - [ - -130.5361101894673, - 54.8027534043494, - ], - [ - -131.08581823797215, - 55.17890615500204, - ], - [ - -131.9672114671423, - 55.497775580459006, - ], - [ - -132.2500107428595, - 56.3699962428974, - ], - [ - -133.53918108435641, - 57.17888743756214, - ], - [ - -134.07806292029608, - 58.12306753196691, - ], - [ - -135.0382110322791, - 58.18771474876394, - ], - [ - -136.62806230995471, - 58.21220937767043, - ], - [ - -137.800006279686, - 58.49999542910376, - ], - [ - -139.867787041413, - 59.53776154238915, - ], - [ - -140.825273817133, - 59.727517401765056, - ], - [ - -142.57444353556446, - 60.08444651960497, - ], - [ - -143.9588809948799, - 59.999180406323376, - ], - [ - -145.92555681682788, - 60.45860972761426, - ], - [ - -147.11437394914665, - 60.884656073644635, - ], - [ - -148.22430620012761, - 60.67298940697714, - ], - [ - -148.01806555885082, - 59.97832896589364, - ], - [ - -148.57082251686086, - 59.914172675203304, - ], - [ - -149.72785783587585, - 59.70565827090553, - ], - [ - -150.60824337461642, - 59.368211168039466, - ], - [ - -151.7163927886833, - 59.15582103131993, - ], - [ - -151.85943315326722, - 59.744984035879554, - ], - [ - -151.40971900124717, - 60.72580272077937, - ], - [ - -150.3469414947325, - 61.03358755150987, - ], - [ - -150.62111080625704, - 61.2844249538544, - ], - [ - -151.89583919981683, - 60.727197984451266, - ], - [ - -152.57832984109558, - 60.061657212964235, - ], - [ - -154.01917212625764, - 59.35027944603428, - ], - [ - -153.28751135965317, - 58.86472768821977, - ], - [ - -154.23249243875847, - 58.14637360293051, - ], - [ - -155.3074914215102, - 57.727794501366304, - ], - [ - -156.30833472392305, - 57.422774359763594, - ], - [ - -156.55609737854638, - 56.97998484967064, - ], - [ - -158.11721655986779, - 56.46360809999419, - ], - [ - -158.43332129619714, - 55.99415355083852, - ], - [ - -159.60332739971741, - 55.56668610292013, - ], - [ - -160.28971961163427, - 55.643580634170576, - ], - [ - -161.22304765525777, - 55.364734605523495, - ], - [ - -162.23776607974105, - 55.02418691672011, - ], - [ - -163.06944658104638, - 54.68973704692712, - ], - [ - -164.78556922102717, - 54.40417308208214, - ], - [ - -164.94222632552007, - 54.57222483989534, - ], - [ - -163.84833960676565, - 55.03943146424609, - ], - [ - -162.87000139061595, - 55.34804311789321, - ], - [ - -161.80417497459607, - 55.89498647727038, - ], - [ - -160.5636047027812, - 56.00805451112501, - ], - [ - -160.07055986228448, - 56.41805532492873, - ], - [ - -158.6844429189195, - 57.01667511659787, - ], - [ - -158.46109737855403, - 57.21692129172885, - ], - [ - -157.72277035218391, - 57.57000051536306, - ], - [ - -157.55027442119362, - 58.328326321030204, - ], - [ - -157.04167497457698, - 58.91888458926172, - ], - [ - -158.19473120830554, - 58.61580231386978, - ], - [ - -158.51721798402303, - 58.78778148053732, - ], - [ - -159.0586061269288, - 58.42418610293163, - ], - [ - -159.71166704001737, - 58.93139028587632, - ], - [ - -159.98128882550017, - 58.572549140041644, - ], - [ - -160.3552711659965, - 59.07112335879361, - ], - [ - -161.3550034251151, - 58.670837714260756, - ], - [ - -161.96889360252632, - 58.67166453717738, - ], - [ - -162.05498653872465, - 59.26692536074745, - ], - [ - -161.8741707021354, - 59.63362132429057, - ], - [ - -162.51805904849212, - 59.98972361921386, - ], - [ - -163.8183414378202, - 59.79805573184336, - ], - [ - -164.66221757714652, - 60.26748444278263, - ], - [ - -165.3463877024748, - 60.50749563256238, - ], - [ - -165.3508318756519, - 61.073895168697504, - ], - [ - -166.12137915755602, - 61.50001902937623, - ], - [ - -165.73445187077058, - 62.074996853271784, - ], - [ - -164.9191786367179, - 62.63307648380794, - ], - [ - -164.56250790103934, - 63.14637848576302, - ], - [ - -163.75333248599708, - 63.21944896102377, - ], - [ - -163.06722449445786, - 63.05945872664802, - ], - [ - -162.26055538638175, - 63.54193573674115, - ], - [ - -161.53444983624863, - 63.455816962326764, - ], - [ - -160.7725066803211, - 63.766108100023246, - ], - [ - -160.9583351308426, - 64.22279857040274, - ], - [ - -161.51806840721218, - 64.40278758407527, - ], - [ - -160.77777767641481, - 64.78860382756642, - ], - [ - -161.39192623598765, - 64.77723501246231, - ], - [ - -162.4530500966689, - 64.55944468856819, - ], - [ - -162.75778601789415, - 64.33860545516876, - ], - [ - -163.54639421288428, - 64.5591604681905, - ], - [ - -164.96082984114514, - 64.44694509546883, - ], - [ - -166.42528825586447, - 64.68667206487066, - ], - [ - -166.8450042389391, - 65.08889557561452, - ], - [ - -168.11056006576715, - 65.66999705673675, - ], - [ - -166.70527116602193, - 66.08831777613938, - ], - [ - -164.47470964257548, - 66.5766600612975, - ], - [ - -163.65251176659564, - 66.5766600612975, - ], - [ - -163.78860165103623, - 66.07720734319668, - ], - [ - -161.67777442121013, - 66.11611969671242, - ], - [ - -162.48971452538004, - 66.73556509059512, - ], - [ - -163.71971696679117, - 67.11639455837008, - ], - [ - -164.4309913808565, - 67.61633820257777, - ], - [ - -165.39028683170673, - 68.04277212185025, - ], - [ - -166.76444068099605, - 68.35887685817966, - ], - [ - -166.20470740462667, - 68.88303091091615, - ], - [ - -164.43081051334346, - 68.91553538682774, - ], - [ - -163.1686136546145, - 69.37111481391287, - ], - [ - -162.930566169262, - 69.85806183539927, - ], - [ - -161.90889726463556, - 70.33332998318764, - ], - [ - -160.93479651593367, - 70.44768992784958, - ], - [ - -159.03917578838713, - 70.89164215766891, - ], - [ - -158.11972286683394, - 70.82472117785102, - ], - [ - -156.58082455139808, - 71.35776357694175, - ], - [ - -155.06779029032427, - 71.14777639432367, - ], - [ - -154.3441652089412, - 70.69640859647018, - ], - [ - -153.9000062733926, - 70.88998851183567, - ], - [ - -152.21000606993528, - 70.82999217394485, - ], - [ - -152.27000240782613, - 70.60000621202983, - ], - [ - -150.73999243874448, - 70.43001658800569, - ], - [ - -149.7200030181675, - 70.53001048449045, - ], - [ - -147.61336157935705, - 70.2140349392418, - ], - [ - -145.68998980022533, - 70.12000967068673, - ], - [ - -144.9200109590764, - 69.98999176704046, - ], - [ - -143.58944618042523, - 70.15251414659832, - ], - [ - -142.07251034871348, - 69.85193817817265, - ], - [ - -140.98598752156073, - 69.71199839952635, - ], - [ - -140.98598761037601, - 69.71199839952635, - ], - ], - ], - ], -} - -# List of U.S. state locations and their coordinates -# Full JSON usa_map_data embedded as a Starlark-compatible list -# The "Map" number refers to the location in the "Contiguous US Map with Alaska and Hawaii insets". The main map is 1, hawaii is 2 and alaska is 3 -usa_capitols = [ - {"state": "Alabama", "location": "Montgomery", "coordinates": {"lat": 32.361538, "lon": -86.279118}, "map": 1}, - {"state": "Alaska", "location": "Juneau", "coordinates": {"lat": 58.301935, "lon": -134.419740}, "map": 3}, - {"state": "Arizona", "location": "Phoenix", "coordinates": {"lat": 33.448457, "lon": -112.073844}, "map": 1}, - {"state": "Arkansas", "location": "Little Rock", "coordinates": {"lat": 34.736009, "lon": -92.331122}, "map": 1}, - {"state": "California", "location": "Sacramento", "coordinates": {"lat": 38.555605, "lon": -121.468926}, "map": 1}, - {"state": "Colorado", "location": "Denver", "coordinates": {"lat": 39.739167, "lon": -104.984167}, "map": 1}, - {"state": "Connecticut", "location": "Hartford", "coordinates": {"lat": 41.767000, "lon": -72.677000}, "map": 1}, - {"state": "Delaware", "location": "Dover", "coordinates": {"lat": 39.161921, "lon": -75.526755}, "map": 1}, - {"state": "Florida", "location": "Tallahassee", "coordinates": {"lat": 30.451800, "lon": -84.272770}, "map": 1}, - {"state": "Georgia", "location": "Atlanta", "coordinates": {"lat": 33.760000, "lon": -84.390000}, "map": 1}, - {"state": "Hawaii", "location": "Honolulu", "coordinates": {"lat": 21.308950, "lon": -157.826182}, "map": 2}, - {"state": "Idaho", "location": "Boise", "coordinates": {"lat": 43.613739, "lon": -116.237651}, "map": 1}, - {"state": "Illinois", "location": "Springfield", "coordinates": {"lat": 39.783250, "lon": -89.650373}, "map": 1}, - {"state": "Indiana", "location": "Indianapolis", "coordinates": {"lat": 39.790942, "lon": -86.147685}, "map": 1}, - {"state": "Iowa", "location": "Des Moines", "coordinates": {"lat": 41.590939, "lon": -93.620866}, "map": 1}, - {"state": "Kansas", "location": "Topeka", "coordinates": {"lat": 39.040000, "lon": -95.690000}, "map": 1}, - {"state": "Kentucky", "location": "Frankfort", "coordinates": {"lat": 38.197274, "lon": -84.863110}, "map": 1}, - {"state": "Louisiana", "location": "Baton Rouge", "coordinates": {"lat": 30.458090, "lon": -91.140229}, "map": 1}, - {"state": "Maine", "location": "Augusta", "coordinates": {"lat": 44.323535, "lon": -69.765261}, "map": 1}, - {"state": "Maryland", "location": "Annapolis", "coordinates": {"lat": 38.972945, "lon": -76.501157}, "map": 1}, - {"state": "Massachusetts", "location": "Boston", "coordinates": {"lat": 42.235200, "lon": -71.027500}, "map": 1}, - {"state": "Michigan", "location": "Lansing", "coordinates": {"lat": 42.733500, "lon": -84.546700}, "map": 1}, - {"state": "Minnesota", "location": "Saint Paul", "coordinates": {"lat": 44.950000, "lon": -93.094000}, "map": 1}, - {"state": "Mississippi", "location": "Jackson", "coordinates": {"lat": 32.320000, "lon": -90.207000}, "map": 1}, - {"state": "Missouri", "location": "Jefferson City", "coordinates": {"lat": 38.572954, "lon": -92.189283}, "map": 1}, - {"state": "Montana", "location": "Helena", "coordinates": {"lat": 46.595805, "lon": -112.027031}, "map": 1}, - {"state": "Nebraska", "location": "Lincoln", "coordinates": {"lat": 40.809868, "lon": -96.675345}, "map": 1}, - {"state": "Nevada", "location": "Carson City", "coordinates": {"lat": 39.160949, "lon": -119.753877}, "map": 1}, - {"state": "New Hampshire", "location": "Concord", "coordinates": {"lat": 43.220093, "lon": -71.549127}, "map": 1}, - {"state": "New Jersey", "location": "Trenton", "coordinates": {"lat": 40.221741, "lon": -74.756138}, "map": 1}, - {"state": "New Mexico", "location": "Santa Fe", "coordinates": {"lat": 35.667231, "lon": -105.964575}, "map": 1}, - {"state": "New York", "location": "Albany", "coordinates": {"lat": 42.659829, "lon": -73.781339}, "map": 1}, - {"state": "North Carolina", "location": "Raleigh", "coordinates": {"lat": 35.771000, "lon": -78.638000}, "map": 1}, - {"state": "North Dakota", "location": "Bismarck", "coordinates": {"lat": 48.813343, "lon": -100.779004}, "map": 1}, - {"state": "Ohio", "location": "Columbus", "coordinates": {"lat": 39.962245, "lon": -83.000647}, "map": 1}, - {"state": "Oklahoma", "location": "Oklahoma City", "coordinates": {"lat": 35.482309, "lon": -97.534994}, "map": 1}, - {"state": "Oregon", "location": "Salem", "coordinates": {"lat": 44.931109, "lon": -123.029159}, "map": 1}, - {"state": "Pennsylvania", "location": "Harrisburg", "coordinates": {"lat": 40.269789, "lon": -76.875613}, "map": 1}, - {"state": "Rhode Island", "location": "Providence", "coordinates": {"lat": 41.823550, "lon": -71.422132}, "map": 1}, - {"state": "South Carolina", "location": "Columbia", "coordinates": {"lat": 34.000000, "lon": -81.035000}, "map": 1}, - {"state": "South Dakota", "location": "Pierre", "coordinates": {"lat": 44.367966, "lon": -100.336378}, "map": 1}, - {"state": "Tennessee", "location": "Nashville", "coordinates": {"lat": 36.165000, "lon": -86.784000}, "map": 1}, - {"state": "Texas", "location": "Austin", "coordinates": {"lat": 30.266667, "lon": -97.750000}, "map": 1}, - {"state": "Utah", "location": "Salt Lake City", "coordinates": {"lat": 40.754700, "lon": -111.892622}, "map": 1}, - {"state": "Vermont", "location": "Montpelier", "coordinates": {"lat": 44.266390, "lon": -72.571940}, "map": 1}, - {"state": "Virginia", "location": "Richmond", "coordinates": {"lat": 37.540000, "lon": -77.460000}, "map": 1}, - {"state": "Washington", "location": "Olympia", "coordinates": {"lat": 47.042418, "lon": -122.893077}, "map": 1}, - {"state": "West Virginia", "location": "Charleston", "coordinates": {"lat": 38.349497, "lon": -81.633294}, "map": 1}, - {"state": "Wisconsin", "location": "Madison", "coordinates": {"lat": 43.074722, "lon": -89.384444}, "map": 1}, - {"state": "Wyoming", "location": "Cheyenne", "coordinates": {"lat": 41.145548, "lon": -104.802042}, "map": 1}, -] - -usa_national_parks = [ - {"state": "Alaska", "park": "Denali National Park", "coordinates": {"lat": 63.33, "lon": -150.50}, "map": 3}, - {"state": "Alaska", "park": "Gates of the Arctic National Park", "coordinates": {"lat": 67.78, "lon": -153.30}, "map": 3}, - {"state": "Alaska", "park": "Glacier Bay National Park", "coordinates": {"lat": 58.67, "lon": -136.90}, "map": 3}, - {"state": "Alaska", "park": "Katmai National Park", "coordinates": {"lat": 58.50, "lon": -155.00}, "map": 3}, - {"state": "Alaska", "park": "Kenai Fjords National Park", "coordinates": {"lat": 60.00, "lon": -149.65}, "map": 3}, - {"state": "Alaska", "park": "Kobuk Valley National Park", "coordinates": {"lat": 67.55, "lon": -159.28}, "map": 3}, - {"state": "Alaska", "park": "Lake Clark National Park", "coordinates": {"lat": 60.97, "lon": -153.42}, "map": 3}, - {"state": "Alaska", "park": "Wrangell–St. Elias National Park", "coordinates": {"lat": 61.00, "lon": -142.00}, "map": 3}, - #{"state": "American Samoa", "park": "National Park of American Samoa", "coordinates": {"lat": -14.25, "lon": -170.68}, "map": 4}, - {"state": "Arizona", "park": "Grand Canyon National Park", "coordinates": {"lat": 36.11, "lon": -112.11}, "map": 1}, - {"state": "Arizona", "park": "Petrified Forest National Park", "coordinates": {"lat": 35.07, "lon": -109.78}, "map": 1}, - {"state": "Arizona", "park": "Saguaro National Park", "coordinates": {"lat": 32.25, "lon": -110.50}, "map": 1}, - {"state": "Arkansas", "park": "Hot Springs National Park", "coordinates": {"lat": 34.51, "lon": -93.05}, "map": 1}, - {"state": "California", "park": "Channel Islands National Park", "coordinates": {"lat": 34.01, "lon": -119.42}, "map": 1}, - {"state": "California", "park": "Death Valley National Park", "coordinates": {"lat": 36.24, "lon": -116.82}, "map": 1}, - {"state": "California", "park": "Joshua Tree National Park", "coordinates": {"lat": 33.79, "lon": -115.90}, "map": 1}, - {"state": "California", "park": "Kings Canyon National Park", "coordinates": {"lat": 36.80, "lon": -118.55}, "map": 1}, - {"state": "California", "park": "Lassen Volcanic National Park", "coordinates": {"lat": 40.49, "lon": -121.51}, "map": 1}, - {"state": "California", "park": "Pinnacles National Park", "coordinates": {"lat": 36.48, "lon": -121.16}, "map": 1}, - {"state": "California", "park": "Redwood National Park", "coordinates": {"lat": 41.30, "lon": -124.00}, "map": 1}, - {"state": "California", "park": "Sequoia National Park", "coordinates": {"lat": 36.43, "lon": -118.68}, "map": 1}, - {"state": "California", "park": "Yosemite National Park", "coordinates": {"lat": 37.83, "lon": -119.50}, "map": 1}, - {"state": "Colorado", "park": "Black Canyon of the Gunnison National Park", "coordinates": {"lat": 38.57, "lon": -107.72}, "map": 1}, - {"state": "Colorado", "park": "Great Sand Dunes National Park", "coordinates": {"lat": 37.73, "lon": -105.51}, "map": 1}, - {"state": "Colorado", "park": "Mesa Verde National Park", "coordinates": {"lat": 37.18, "lon": -108.49}, "map": 1}, - {"state": "Colorado", "park": "Rocky Mountain National Park", "coordinates": {"lat": 40.35, "lon": -105.68}, "map": 1}, - {"state": "Florida", "park": "Biscayne National Park", "coordinates": {"lat": 25.65, "lon": -80.08}, "map": 1}, - {"state": "Florida", "park": "Dry Tortugas National Park", "coordinates": {"lat": 24.63, "lon": -82.87}, "map": 1}, - {"state": "Florida", "park": "Everglades National Park", "coordinates": {"lat": 25.32, "lon": -80.93}, "map": 1}, - {"state": "Hawaii", "park": "Haleakalā National Park", "coordinates": {"lat": 20.72, "lon": -156.17}, "map": 2}, - {"state": "Hawaii", "park": "Hawai'i Volcanoes National Park", "coordinates": {"lat": 19.38, "lon": -155.20}, "map": 2}, - {"state": "Idaho", "park": "Yellowstone National Park", "coordinates": {"lat": 44.60, "lon": -110.50}, "map": 1}, - {"state": "Indiana", "park": "Indiana Dunes National Park", "coordinates": {"lat": 41.65, "lon": -87.06}, "map": 1}, - {"state": "Kentucky", "park": "Mammoth Cave National Park", "coordinates": {"lat": 37.18, "lon": -86.10}, "map": 1}, - {"state": "Maine", "park": "Acadia National Park", "coordinates": {"lat": 44.35, "lon": -68.21}, "map": 1}, - {"state": "Michigan", "park": "Isle Royale National Park", "coordinates": {"lat": 47.99, "lon": -88.91}, "map": 1}, - {"state": "Minnesota", "park": "Voyageurs National Park", "coordinates": {"lat": 48.50, "lon": -92.88}, "map": 1}, - {"state": "Missouri", "park": "Gateway Arch National Park", "coordinates": {"lat": 38.63, "lon": -90.19}, "map": 1}, - {"state": "Montana", "park": "Glacier National Park", "coordinates": {"lat": 48.70, "lon": -113.72}, "map": 1}, - {"state": "Montana", "park": "Yellowstone National Park", "coordinates": {"lat": 44.60, "lon": -110.50}, "map": 1}, - {"state": "Nevada", "park": "Great Basin National Park", "coordinates": {"lat": 38.98, "lon": -114.30}, "map": 1}, - {"state": "New Mexico", "park": "Carlsbad Caverns National Park", "coordinates": {"lat": 32.17, "lon": -104.44}, "map": 1}, - {"state": "New Mexico", "park": "White Sands National Park", "coordinates": {"lat": 32.78, "lon": -106.17}, "map": 1}, - {"state": "North Carolina", "park": "Great Smoky Mountains National Park", "coordinates": {"lat": 35.68, "lon": -83.53}, "map": 1}, - {"state": "North Dakota", "park": "Theodore Roosevelt National Park", "coordinates": {"lat": 46.98, "lon": -103.45}, "map": 1}, - {"state": "Ohio", "park": "Cuyahoga Valley National Park", "coordinates": {"lat": 41.24, "lon": -81.55}, "map": 1}, - {"state": "Oregon", "park": "Crater Lake National Park", "coordinates": {"lat": 42.94, "lon": -122.10}, "map": 1}, - {"state": "South Carolina", "park": "Congaree National Park", "coordinates": {"lat": 33.78, "lon": -80.78}, "map": 1}, - {"state": "South Dakota", "park": "Badlands National Park", "coordinates": {"lat": 43.75, "lon": -102.50}, "map": 1}, - {"state": "South Dakota", "park": "Wind Cave National Park", "coordinates": {"lat": 43.57, "lon": -103.48}, "map": 1}, - {"state": "Tennessee", "park": "Great Smoky Mountains National Park", "coordinates": {"lat": 35.68, "lon": -83.53}, "map": 1}, - {"state": "Texas", "park": "Big Bend National Park", "coordinates": {"lat": 29.25, "lon": -103.25}, "map": 1}, - {"state": "Texas", "park": "Guadalupe Mountains National Park", "coordinates": {"lat": 31.92, "lon": -104.87}, "map": 1}, - {"state": "Utah", "park": "Arches National Park", "coordinates": {"lat": 38.68, "lon": -109.57}, "map": 1}, - {"state": "Utah", "park": "Bryce Canyon National Park", "coordinates": {"lat": 37.57, "lon": -112.18}, "map": 1}, - {"state": "Utah", "park": "Canyonlands National Park", "coordinates": {"lat": 38.20, "lon": -109.93}, "map": 1}, - {"state": "Utah", "park": "Capitol Reef National Park", "coordinates": {"lat": 38.20, "lon": -111.17}, "map": 1}, - {"state": "Utah", "park": "Zion National Park", "coordinates": {"lat": 37.30, "lon": -113.05}, "map": 1}, - {"state": "Virginia", "park": "Shenandoah National Park", "coordinates": {"lat": 38.53, "lon": -78.35}, "map": 1}, - {"state": "Virgin Islands", "park": "Virgin Islands National Park", "coordinates": {"lat": 18.33, "lon": -64.73}, "map": 1}, - {"state": "Washington", "park": "Mount Rainier National Park", "coordinates": {"lat": 46.85, "lon": -121.76}, "map": 1}, - {"state": "Washington", "park": "North Cascades National Park", "coordinates": {"lat": 48.77, "lon": -121.30}, "map": 1}, - {"state": "Washington", "park": "Olympic National Park", "coordinates": {"lat": 47.97, "lon": -123.50}, "map": 1}, - {"state": "West Virginia", "park": "New River Gorge National Park", "coordinates": {"lat": 38.05, "lon": -81.08}, "map": 1}, - {"state": "Wyoming", "park": "Grand Teton National Park", "coordinates": {"lat": 43.73, "lon": -110.80}, "map": 1}, - {"state": "Wyoming", "park": "Yellowstone National Park", "coordinates": {"lat": 44.60, "lon": -110.50}, "map": 1}, -] - -world_heritage_sites = [ - {"state": "Alaska", "site": "Glacier Bay", "coordinates": {"lat": 60.00, "lon": -140.00}, "map": 3}, - {"state": "Arizona", "site": "Grand Canyon National Park", "coordinates": {"lat": 36.11, "lon": -112.11}, "map": 1}, - {"state": "California", "site": "Redwood National and State Parks", "coordinates": {"lat": 41.30, "lon": -124.00}, "map": 1}, - {"state": "California", "site": "Yosemite National Park", "coordinates": {"lat": 37.83, "lon": -119.50}, "map": 1}, - {"state": "Colorado", "site": "Mesa Verde National Park", "coordinates": {"lat": 37.18, "lon": -108.49}, "map": 1}, - {"state": "Florida", "site": "Everglades National Park", "coordinates": {"lat": 25.32, "lon": -80.93}, "map": 1}, - {"state": "Hawaii", "site": "Hawai'i Volcanoes National Park", "coordinates": {"lat": 19.38, "lon": -155.20}, "map": 2}, - {"state": "Hawaii", "site": "Papahānaumokuākea", "coordinates": {"lat": 22.9, "lon": -160.5}, "map": 2}, - {"state": "Illinois", "site": "Cahokia Mounds State Historic Site", "coordinates": {"lat": 38.65, "lon": -90.06}, "map": 1}, - {"state": "Illinois", "site": "Architecture of Frank Lloyd Wright", "coordinates": {"lat": 41.88, "lon": -87.63}, "map": 1}, - {"state": "Kentucky", "site": "Mammoth Cave National Park", "coordinates": {"lat": 37.18, "lon": -86.10}, "map": 1}, - {"state": "Louisiana", "site": "Monumental Earthworks of Poverty Point", "coordinates": {"lat": 32.63, "lon": -91.41}, "map": 1}, - {"state": "Montana", "site": "Waterton-Glacier International Peace Park", "coordinates": {"lat": 48.99, "lon": -113.91}, "map": 1}, - {"state": "New Mexico", "site": "Carlsbad Caverns National Park", "coordinates": {"lat": 32.17, "lon": -104.44}, "map": 1}, - {"state": "New Mexico", "site": "Chaco Culture", "coordinates": {"lat": 36.06, "lon": -107.97}, "map": 1}, - {"state": "New Mexico", "site": "Taos Pueblo", "coordinates": {"lat": 36.44, "lon": -105.54}, "map": 1}, - {"state": "New York", "site": "Statue of Liberty", "coordinates": {"lat": 40.6892, "lon": -74.0445}, "map": 1}, - {"state": "Ohio", "site": "Hopewell Ceremonial Earthworks", "coordinates": {"lat": 39.38, "lon": -82.98}, "map": 1}, - {"state": "Pennsylvania", "site": "Historic Moravian Bethlehem District", "coordinates": {"lat": 40.62, "lon": -75.38}, "map": 1}, - {"state": "Pennsylvania", "site": "Independence Hall", "coordinates": {"lat": 39.9489, "lon": -75.1500}, "map": 1}, - {"state": "Pennsylvania", "site": "Moravian Church Settlements", "coordinates": {"lat": 40.62, "lon": -75.38}, "map": 1}, - #{"state": "Puerto Rico", "site": "La Fortaleza and San Juan National Historic Site", "coordinates": {"lat": 18.47, "lon": -66.12}, "map": 1}, - {"state": "Texas", "site": "San Antonio Missions", "coordinates": {"lat": 29.36, "lon": -98.48}, "map": 1}, - {"state": "Virginia", "site": "Monticello and the University of Virginia", "coordinates": {"lat": 38.03, "lon": -78.50}, "map": 1}, - {"state": "Wyoming", "site": "Yellowstone National Park", "coordinates": {"lat": 44.60, "lon": -110.50}, "map": 1}, -] - def get_bounds(coordinates): xs = [coord[0] for coord in coordinates] ys = [coord[1] for coord in coordinates] @@ -2060,7 +126,7 @@ def main(config): width, height = canvas.width(), canvas.height() is2x = canvas.is2x() font = "terminus-14" if is2x else "CG-pixel-3x5-mono" - dot_size = 2 if is2x else 1 + dot_size = 1 #if is2x else 1 # This map of USA includes Alaska and Hawaii # Offset for Mainland, Hawaii, Alaska - width of map, height of map, move right, move up @@ -2112,6 +178,10 @@ def main(config): usa_locations = world_heritage_sites preface = "HERITAGE" config_item = "site" + elif tracking_type == "presidential_libraries": + usa_locations = presidential_libraries + preface = "PRESIDENTIAL" + config_item = "site" else: usa_locations = usa_capitols preface = "STATE" @@ -2121,7 +191,7 @@ def main(config): for location in usa_locations: idx = location["map"] - 1 if (0 <= idx) and (idx < len(group_coordinates)): - if config.get("%s_%s_%s" % (preface, location["state"].replace(" ", "_"), location[config_item.lower()].replace(" ", "_"))) == "true": + if config.get("%s_%s_%s" % (preface, slugify(location["state"]), slugify(location[config_item.lower()]),)) == "true": visited_group_coordinates[idx].append([location["coordinates"]["lon"], location["coordinates"]["lat"]]) else: group_coordinates[idx].append([location["coordinates"]["lon"], location["coordinates"]["lat"]]) @@ -2245,11 +315,38 @@ def get_world_heritage_options(sites): for site in sorted_sites ] +def get_presidential_library_options(libraries): + sorted_libraries = sorted(libraries, key = lambda entry: (entry["state"], entry["site"])) + + return [ + schema.Toggle( + id = "PRESIDENTIAL_%s_%s" % ( + slugify(library["state"]), + slugify(library["site"]), + ), + name = library["site"], + desc = "%s, %s" % (library["site"], library["state"]), + icon = "landmarkDome", + default = False, + ) + for library in sorted_libraries + ] + TRACKING_OPTIONS = [ schema.Option(value = "capitols", display = "State Capitols"), schema.Option(value = "national_parks", display = "National Parks"), schema.Option(value = "world_heritage_sites", display = "World Heritage Sites"), + schema.Option(value = "presidential_libraries", display = "Presidential Libraries"), ] +def slugify(value): + return ( + value + .replace(" ", "_") + .replace(".", "") + .replace(",", "") + .replace("'", "") + .replace("-", "_") + ) def get_tracking_items(tracking_type): if tracking_type == "capitols": @@ -2258,6 +355,8 @@ def get_tracking_items(tracking_type): return get_national_park_options(usa_national_parks) elif tracking_type == "world_heritage_sites": return get_world_heritage_options(world_heritage_sites) + elif tracking_type == "presidential_libraries": + return get_presidential_library_options(presidential_libraries) else: return get_location_options(usa_capitols) From 71568624e8d50f27daad7baee29f5f1404164de0 Mon Sep 17 00:00:00 2001 From: Robert Ison Date: Mon, 27 Jul 2026 09:34:41 -0400 Subject: [PATCH 15/18] Update American Map Book data --- apps/americanmapbook/americanmapbook.star | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/americanmapbook/americanmapbook.star b/apps/americanmapbook/americanmapbook.star index 5699c1c3b..e445d9dd5 100644 --- a/apps/americanmapbook/americanmapbook.star +++ b/apps/americanmapbook/americanmapbook.star @@ -333,10 +333,11 @@ def get_presidential_library_options(libraries): ] TRACKING_OPTIONS = [ - schema.Option(value = "capitols", display = "State Capitols"), + schema.Option(value = "national_parks", display = "National Parks"), - schema.Option(value = "world_heritage_sites", display = "World Heritage Sites"), schema.Option(value = "presidential_libraries", display = "Presidential Libraries"), + schema.Option(value = "capitols", display = "State Capitols"), + schema.Option(value = "world_heritage_sites", display = "World Heritage Sites"), ] def slugify(value): return ( From 3f16bdd7405a522ab2dc1b6c3bc6348e44329c88 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 27 Jul 2026 13:37:57 +0000 Subject: [PATCH 16/18] chore: auto-update manifest metadata [skip ci] --- apps/americanmapbook/manifest.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/americanmapbook/manifest.yaml b/apps/americanmapbook/manifest.yaml index a7cefbc15..c40899c63 100644 --- a/apps/americanmapbook/manifest.yaml +++ b/apps/americanmapbook/manifest.yaml @@ -12,4 +12,4 @@ tags: - science - wide 2x support published: '2025-06-24T22:52:36Z' -updated: '2025-11-29T17:52:33Z' +updated: '2026-07-27T13:34:41Z' From 64f06cd8a1c18c42680c8588da4b66e243682a92 Mon Sep 17 00:00:00 2001 From: Robert Ison Date: Mon, 27 Jul 2026 09:40:01 -0400 Subject: [PATCH 17/18] Lint Fixes --- apps/americanmapbook/americanmapbook.star | 25 ++++++++++--------- .../americanmapbook/americanmapbook_data.star | 3 +-- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/apps/americanmapbook/americanmapbook.star b/apps/americanmapbook/americanmapbook.star index e445d9dd5..610c49be5 100644 --- a/apps/americanmapbook/americanmapbook.star +++ b/apps/americanmapbook/americanmapbook.star @@ -5,9 +5,9 @@ Description: Tracking your visits across the USA Author: Robert Ison """ +load("americanmapbook_data.star", "presidential_libraries", "usa_capitols", "usa_map_data", "usa_national_parks", "world_heritage_sites") load("render.star", "canvas", "render") load("schema.star", "schema") -load("americanmapbook_data.star", "usa_map_data", "usa_capitols", "usa_national_parks", "world_heritage_sites", "presidential_libraries") DEFAULT_COLORS = ["#009A17", "#708090", "#FFD700"] #map, unvisited, visited @@ -76,7 +76,7 @@ def convert_point_for_map(point, offset, height): converted_x = point[0] + offset[2] converted_y = height - point[1] + offset[3] return converted_x, converted_y - + def main(config): # Holds the coordinates of the outline of the different maps mainland_coordinates = [] @@ -126,7 +126,7 @@ def main(config): width, height = canvas.width(), canvas.height() is2x = canvas.is2x() font = "terminus-14" if is2x else "CG-pixel-3x5-mono" - dot_size = 1 #if is2x else 1 + dot_size = 1 #if is2x else 1 # This map of USA includes Alaska and Hawaii # Offset for Mainland, Hawaii, Alaska - width of map, height of map, move right, move up @@ -187,11 +187,13 @@ def main(config): preface = "STATE" config_item = "location" + total_visited = 0 + if usa_locations != None: for location in usa_locations: idx = location["map"] - 1 if (0 <= idx) and (idx < len(group_coordinates)): - if config.get("%s_%s_%s" % (preface, slugify(location["state"]), slugify(location[config_item.lower()]),)) == "true": + if config.get("%s_%s_%s" % (preface, slugify(location["state"]), slugify(location[config_item.lower()]))) == "true": visited_group_coordinates[idx].append([location["coordinates"]["lon"], location["coordinates"]["lat"]]) else: group_coordinates[idx].append([location["coordinates"]["lon"], location["coordinates"]["lat"]]) @@ -213,7 +215,6 @@ def main(config): animation_frames.append(render.Stack(children = items_to_plot)) # Loop through all three groups of visited - total_visited = 0 for i, group in enumerate(visited_group_coordinates): gridpoints = normalize_coordinates(group, maps[i], offsets[i][0], offsets[i][1]) @@ -279,7 +280,7 @@ def main(config): ), width - pad - text_w, height - pad - text_h, - ) + ), ) animation_frames.append(render.Stack(children = final_items)) @@ -333,20 +334,20 @@ def get_presidential_library_options(libraries): ] TRACKING_OPTIONS = [ - schema.Option(value = "national_parks", display = "National Parks"), schema.Option(value = "presidential_libraries", display = "Presidential Libraries"), schema.Option(value = "capitols", display = "State Capitols"), schema.Option(value = "world_heritage_sites", display = "World Heritage Sites"), ] + def slugify(value): return ( value - .replace(" ", "_") - .replace(".", "") - .replace(",", "") - .replace("'", "") - .replace("-", "_") + .replace(" ", "_") + .replace(".", "") + .replace(",", "") + .replace("'", "") + .replace("-", "_") ) def get_tracking_items(tracking_type): diff --git a/apps/americanmapbook/americanmapbook_data.star b/apps/americanmapbook/americanmapbook_data.star index 327769e0a..9cb7b545b 100644 --- a/apps/americanmapbook/americanmapbook_data.star +++ b/apps/americanmapbook/americanmapbook_data.star @@ -1,4 +1,3 @@ - # USA JSON structure usa_map_data = { "coordinates": [ @@ -1949,4 +1948,4 @@ presidential_libraries = [ {"state": "Arkansas", "site": "William J. Clinton Presidential Library", "coordinates": {"lat": 34.7453, "lon": -92.2600}, "map": 1}, {"state": "Texas", "site": "George W. Bush Presidential Library", "coordinates": {"lat": 32.8412, "lon": -96.7853}, "map": 1}, {"state": "Illinois", "site": "Obama Presidential Center", "coordinates": {"lat": 41.7861, "lon": -87.6032}, "map": 1}, -] \ No newline at end of file +] From fc449e6863139cc46e707732a915d901c8f8b682 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 27 Jul 2026 13:40:38 +0000 Subject: [PATCH 18/18] chore: auto-update manifest metadata [skip ci] --- apps/americanmapbook/manifest.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/americanmapbook/manifest.yaml b/apps/americanmapbook/manifest.yaml index c40899c63..ba5bdb561 100644 --- a/apps/americanmapbook/manifest.yaml +++ b/apps/americanmapbook/manifest.yaml @@ -12,4 +12,4 @@ tags: - science - wide 2x support published: '2025-06-24T22:52:36Z' -updated: '2026-07-27T13:34:41Z' +updated: '2026-07-27T13:40:01Z'