CINXE.COM
Members of Congress & Congressional District Maps - GovTrack.us
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Members of Congress & Congressional District Maps - GovTrack.us</title> <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" /> <link rel="apple-touch-icon" sizes="180x180" href="/static/favicon/apple-touch-icon.png"> <link rel="icon" type="image/png" sizes="32x32" href="/static/favicon/favicon-32x32.png"> <link rel="icon" type="image/png" sizes="16x16" href="/static/favicon/favicon-16x16.png"> <link rel="manifest" href="/static/favicon/site.webmanifest"> <meta name="msapplication-TileColor" content="#9B2347"> <meta name="theme-color" content="#9B2347"> <link href="/static/vendor/bootstrap.min.css" rel="stylesheet"> <link href="/static/vendor/fontawesome/css/fontawesome.css" rel="stylesheet"> <link href="/static/vendor/fontawesome/css/solid.css" rel="stylesheet"> <link href="/static/vendor/fontawesome/css/brands.css" rel="stylesheet"> <link media="all" rel="stylesheet" href="/static/css/all-min.css?20241114" /> <meta name="description" content="What congressional district are you in? Find your U.S. Congress senators and representative using a map." /> <meta name="keywords" content="United States Congress,U.S. Congress,congressional districts,map,senator,senators,representative,representatives,congressman,congressmen,congresswoman,congresswomen,House of Representatives,Senate" /> <meta name="robots" content="noai, noimageai"> <meta name="fediverse:creator" content="@govtrack@mastodon.social" /> <meta property="fb:app_id" content="119329904748946" /> <meta property="og:site_name" content="GovTrack.us" /> <meta property="og:image" content="https://www.govtrack.us/static/images/media_icon.png?20230729" /> <script async src="https://www.googletagmanager.com/gtag/js?id=G-GD8FT6MB9V"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-GD8FT6MB9V'); </script> <script type="text/javascript"> window.post_jquery_load_scripts = []; </script> <!-- Mapbox --> <meta name='viewport' content='initial-scale=1,maximum-scale=1,user-scalable=no' /> <script src='https://api.mapbox.com/mapbox-gl-js/v2.6.0-beta.1/mapbox-gl.js'></script> <link href='https://api.mapbox.com/mapbox-gl-js/v2.6.0-beta.1/mapbox-gl.css' rel='stylesheet' /> <style> .spanbullets span:after { display: inline; content: " · "; } .spanbullets span:last-child:after { display: none; content: ""; } #map { width: 100%; height: 80vh; border: 1px solid #999; } </style> </head> <body class=""> <!--[if lt IE 8]><p style="background-color: black; color: white;">Internet Explorer version 8 or any modern web browser is required to use this website, sorry.<![endif]--> <!--[if gt IE 7]><!--> <div id="bodybody"> <div id="skiptocontent"><a href="#maincontent">skip to main content</a></div> <div style="text-align: center; padding: 15px 5px;"> <a href="https://www.kickstarter.com/projects/govtrack/alert-new-executive-order?ref=bxwr19"> <img src="/static/kickstarter-2025-banner.png" class="img-fluid" style="max-width: 100%; max-height: 20vh;"> </a> </div> <div id="masthead-overbar"> <div class="container"> <a href="/accounts/membership" class="yellow"> <span>Hide The Ads ▶</span> </a> <div style="display: inline-block; padding-left: 2em;"> <a id="nav_login" class="yellow" href="/accounts/login?next=/congress/members/map"><span>Log In ▶</span></a> <div id="nav_session" class="dropdown" style="display: none"> <button class="btn btn-primary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false" style="padding: .15rem .5rem"> Your Account </button> <ul class="dropdown-menu"> <li><a class="dropdown-item" href="/accounts/lists">Your Subscriptions & Lists</a></li> <li><a class="dropdown-item" href="/accounts/positions">Your Positions</a></li> <li><a class="dropdown-item" href="/accounts/docket">Your Docket</a></li> <li><hr class="dropdown-divider"></li> <li><a class="dropdown-item" href="/accounts/profile" title="">Account Settings</a></li> <li><a class="dropdown-item" href="/accounts/logout?next=/congress/members/map">Log Out</a></li> </ul> </div> </div> </div> </div> <div id="masthead"> <nav class="navbar navbar-expand-lg bg-body-tertiary"> <div class="container"> <div id="logo-container"> <a id="logo" href="/" class="navbar-brand ">govtrack.us</a> <div style="margin-top: .75em; line-height: 1em; font-size: 11.75px; letter-spacing: -.25px;">Tracking the U.S. Congress #OpenGov</div> </div> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarSupportedContent"> <ul class="navbar-nav me-auto mb-2 mb-lg-0"> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false"> Bills & Votes </a> <ul class="dropdown-menu"> <li><a class="dropdown-item" href="/congress/bills">Bills in Congress</a></li> <li><a class="dropdown-item" href="/congress/votes">Congressional Votes</a></li> <li><a class="dropdown-item" href="/posts">Coming Up, Recap, and Analysis</a></li> </ul> </li> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false"> Legislators </a> <ul class="dropdown-menu"> <li><a class="dropdown-item" href="/congress/members">Representatives & Senators</a></li> <li><a class="dropdown-item" href="/congress/members/map">Congressional Districts Map</a></li> <li><a class="dropdown-item" href="/congress/committees">Committees</a></li> <li><hr class="dropdown-divider"></li> <li><a class="dropdown-item" href="/misconduct">Misconduct Database</a></li> <li><a class="dropdown-item" href="/congress/members/missing">Missing Legislators</a></li> </ul> </li> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false"> Help </a> <ul class="dropdown-menu"> <li><a class="dropdown-item" href="/how-to-use">How To Use GovTrack</a></li> <li><a class="dropdown-item" href="/for-educators">For Educators</a></li> <li><a class="dropdown-item" href="/for-advocates">For Advocates</a></li> <li><a class="dropdown-item" href="/for-hill-staff">For Congressional Staff</a></li> <li><a class="dropdown-item" href="/for-journalists">For Journalists</a></li> <li><hr class="dropdown-divider"></li> <li><a class="dropdown-item" href="/how-a-bill-becomes-a-law">How does a bill become a law?</a></li> <li><a class="dropdown-item" href="/what-is-the-law">What is the law?</a></li> <li><a class="dropdown-item" href="/congressional-procedures">Congressional Procedures</a></li> </ul> </li> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false"> About Us </a> <ul class="dropdown-menu"> <li><a class="dropdown-item" href="/about">About GovTrack.us</a></li> <li><a class="dropdown-item" href="/about-our-data">About Our Data</a></li> <li><a class="dropdown-item" href="/posts/news">Site News</a></li> <li><a class="dropdown-item" href="/press">Press Clips</a></li> <li><hr class="dropdown-divider"></li> <li><a class="dropdown-item" href="/reading-list">Books and Games We Recommend</a></li> <li><a class="dropdown-item" href="/congress/committees/game">Guess the Committee<i>!</i></a></li> </ul> </li> </ul> <form class="d-flex" role="search" name="header_search" action="/search"> <label for="master_search_q" class="sr-only">Search GovTrack for</label> <input class="form-control me-2" type="search" placeholder="bill, legislator, or keyword" aria-label="Search" id="master_search_q" name="q"> <button class="btn btn-outline-success" type="submit"><span class="fas fa-search"></span> <span class="sr-only">Search</span></button> </form> </div> </div> </nav> <div id="sitenewscontainer" class="navbar-default" > <div id="sitenews"> <a href="/posts/479/2025-02-19_hearings-ahoy">Legislative Preview Feb 19, 2025: <b>Hearings Ahoy</b> »</a> </div> <!-- /sitenews --> </div> <!-- /sitenewscontainer --> </div> <!-- /masthead --> <div id="breadcrumbs"> <div class="container"> <nav aria-label="breadcrumb"> <ol class="breadcrumb"> <li class="breadcrumb-item"><a href="/congress/members">Members of Congress</a></li> </ol> </nav> </div> </div> <div id="maincontent" class="container"> <div id="content"> <h1>Congressional Districts Map</h1> <div style="margin: 2em 0"> <form class="form-inline" onsubmit="do_address(); return false;"> <p>Find your representative (a.k.a. congressman or congresswoman) by entering your address or clicking a district in the map:</p> <div class="form-group"> <label for="user-address" class="sr-only">Address</label> <input type="text" class="form-control" id="user-address" placeholder="Enter an address in the United States"> </div> <button type="submit" class="btn btn-primary">Find My District</button> </form> <div style="margin: .5em"><a href="#" onclick="do_by_current_location(); return false;" style="text-decoration: none"><i class="fas fa-map-marker" aria-hidden="true"></i> I’m at home, use my phone/computer’s location</a></div> </div> <div class="row"> <div class="col-xs-12"> <div style="margin: 2em 0"> </div> <div id='map'></div> <div style="clear: both; text-align: center; margin: 1em"> <div id="embed_teaser"> <a href="#" onclick="$('#embed_teaser').hide(); $('#embed_details').fadeIn(); return false;">Embed this map on your website...</a> </div> <div id="embed_details" style="display: none;"> <div style="text-align: center">Use this HTML code:</div> <pre id="embedpre" wrap="hard" style="overflow: auto; margin: 15px; font-size: 90%; color: black;"><iframe width="425" height="300" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="https://www.govtrack.us/congress/members/embed/mapframe?&bounds=<span id="embedbounds"></span>"></iframe></pre> </div> </div> </div> <!-- /col --> </div> <!-- /row --> <div class="ads footer leaderboard" data-zone="footer"> <div class="explainer">(<a href="/advertising">About Ads</a> | <a href="/accounts/membership">Hide These Ads</a>)</div> </div> </div><!-- /content --> </div> <!-- /container --> </div> <!-- /#bodybody --> <footer id="footer"> <div class="container"> <div class="row"> <nav class="col-6 col-md-2"> <ul> <li><a href="/">Home</a></li> <li><a href="/about">About GovTrack</a></li> <li><a href="/about-our-data">About the Data</a></li> <li><a href="/contact">Contact Us</a></li> <li><a href="/legal">Privacy & Legal</a></li> </ul> </nav> <nav class="col-6 col-md-2"> <ul> <li><a href="/posts/news"><i class="fas fa-list fa-fw"></i>Site News</a></li> <li><a rel="me" href="https://mastodon.social/@GovTrack"><i class="fab fa-mastodon fa-fw"></i>Mastodon</a></li> <li><a href="https://bsky.app/profile/govtrack.us"><i class="fab fa-bluesky fa-fw"></i>Bluesky</a></li> <li><a href="https://www.patreon.com/govtrack"><i class="fas fa-dollar-sign fa-fw"></i><span>Patreon</span></a></li> <li><a href="https://github.com/govtrack"><i class="fab fa-github fa-fw"></i><span>GitHub</span></a></li> </ul> </nav> <section class="col-12 col-md-8"> <p>GovTrack helps everyone learn about and track the activities of the United States Congress. Launched more than 20 years ago, we’re one of the oldest government transparency and accountability websites on the Internet.</p> <p>This is a project of <a href="http://www.civicimpulse.com">Civic Impulse, LLC</a>. GovTrack.us is <b>not</b> a government website.</p> </section> </div> </div> </footer> <div id="error_modal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="errorModalTitle" aria-hidden="true"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <h2 class="modal-title" id="errorModalTitle">[error message]</h2> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal" aria-label="Close"></button> </div> <div class="modal-body"> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-bs-dismiss="modal">OK</button> </div> </div> </div> </div> <script type="text/javascript" src="/static/vendor/jquery.js"></script> <script type="text/javascript" src="/static/js/jquery.cookie.js"></script> <script type="text/javascript" src="/static/js/jquery-utils.js?20160310"></script> <script type="text/javascript" src="/static/vendor/jquery.lazy.min.js"></script> <script src="/static/vendor/bootstrap.bundle.min.js"></script> <script type="text/javascript" src="/_twostream/user-head?path=/congress/members/map"> </script> <script> gtag('set', 'user_properties', { Registered: the_user ? "Logged In" : "Anonymous", GeoSegment: the_segment }); <!-- Master page elements when using the user-head script --> if (the_user) { $('#nav_login').hide(); $('#nav_session').show(); $('#nav_session > button').text(the_user.email); } </script> <script src="/static/js/govtrack.js?20240911"></script> <script src="/static/js/congressional-districts-bboxes-119-2024.js"> </script> <script> // Mapbox configuration var accessToken = 'pk.eyJ1IjoiZ292dHJhY2siLCJhIjoiY2lua2J1cmwzMHhyNnVrbHl3bmx4ZnZneiJ9.Wld_AdbKwOgmF2ZXn2SPmw'; var styleURL = 'mapbox://styles/govtrack/cm55q1wti00ks01s830bgdegp'; var mapId = 'govtrack.cd\u002D119\u002D2024'; var state = null; var district = null; var bbox; if (state && district) bbox = bboxes[state + district] else if (state) bbox = bboxes[state]; else bbox = [-128.8, 23.5, -65.4, 53]; // United States function lngLatBoundsToCameraOptions(bounds) { var w = $('#map').width(); var h = $('#map').height(); // during initialization the element dimensions may not be available and can be negative?! in which case use the window dimensions if (!w || !h || (w*h) < 320*200) { w = $(window).width(); h = $(window).height(); } var zoom = Math.log(((w*h) / ((bounds.getNorth()-bounds.getSouth()) * (bounds.getEast() - bounds.getWest())))) / 1.75 return { center: bounds.getCenter(), zoom: zoom }; } // Initialize the map // Use an Albers equal area projection. Center the projection on the state/district // if we're opening on a state/district to minimize distortion in the default view, // although that creates an interesting effect when zooming out! mapboxgl.accessToken = accessToken; var bounds = mapboxgl.LngLatBounds.convert([[bbox[0], bbox[1]], [bbox[2], bbox[3]]]); var camera = lngLatBoundsToCameraOptions(bounds); var projection = null; if (state != "AK" && state != "AS") // the albers projection doesn't work right for these projection = { name: 'albers', center: camera.center.toArray(), parallels: [23.5, 53] }; var map = new mapboxgl.Map({ container: 'map', style: styleURL, projection: projection, center: camera.center, zoom: camera.zoom }); // Once map is fully loaded... map.on('load', function() { // set controls map.addControl(new mapboxgl.NavigationControl(), 'top-left'); map.touchZoomRotate.disableRotation(); // Create a filter to show only the selected state and district. map.showCongressionalDistrict = function(state, district) { var filter = ['all']; if (state) filter.push(['==', 'state', state]); if (district) filter.push(['==', 'number', district]); map.setFilter("CD-Fills", filter); // Could also do CD-Outlines and CD-Labels. } map.showCongressionalDistrict(state, district); }); // Add markers. map.addMarker = function(label, lnglat) { var marker = new mapboxgl.Popup({ closeButton: false, closeOnClick: false }).setLngLat(lnglat) .setText(label) .addTo(map); return marker; }; function address_to_latlng(address, callback) { $.ajax({ url: 'https://api.mapbox.com/geocoding/v5/mapbox.places/' + encodeURIComponent(address) + '.json?country=us&access_token=' + accessToken, method: 'GET', success: function(resp) { if (resp.type == "FeatureCollection" && resp.features.length > 0) { callback(resp.features[0].center); return; } alert("Could not find that address."); } }); } function map_click_to_district(clickEventData, callback) { // The map control provides a client-side-only way to determine what // is under the cursor. But this only sees features that are currently // shown on the map. so if a filter is applied and the click is on // a district that is not shown, then this will miss the feature, // but we'll fall back to the tilequery API in that case. And it // uses the click event's screen coordinate. var features = map.queryRenderedFeatures( clickEventData.point, { layers: ["CD-Fills"] }); if (features.length > 0) { callback(features[0].properties); return; } if (!map.getFilter("CD-Fills")) { // If no filter is applied, then a negative result is definitive. callback(null); return; } // Fall back to the Mapbox Tilequery API. This is likely to happen // if a filter is applied (which you could test with // map.getFilter("CD-Fills"), but we might as well see if the click // is on a rendered feature before hitting the API. return latlng_to_district(clickEventData.lngLat, callback); } function latlng_to_district(lngLat, callback) { // Note that, from the Mapbox API docs: // "Use of this endpoint is rate limited to 600 requests per minute." $.ajax({ url: 'https://api.mapbox.com/v4/' + mapId + '/tilequery/' + lngLat.lng + ',' + lngLat.lat + '.json?radius=0&access_token=' + accessToken, method: 'GET', success: function(resp) { if (resp.type == "FeatureCollection" && resp.features.length > 0) // resp is always a FeatureCollection, just sanity checking, but it might // be empty. If it's not empty, it will contain a single Feature // (whose geometry is a Polygon) represending the boundaries of a // congressional district. Its properties come from the original // GeoJSON uploaded to Mapbox. callback(resp.features[0].properties); else // Click was not on a district. callback(null); } }); } </script> <script> var current_district_popup; var hover_popup = new mapboxgl.Popup({ closeButton: false, closeOnClick: false }); map.on("mouseenter", "CD-Fills", function(e) { map.getCanvas().style.cursor = 'pointer'; }); //map.on("mouseleave", "CD-Fills", function(e) { map.getCanvas().style.cursor = ''; }); // when going between districts a leave event for the previous district can fire after the enter event for the next district? //map.on("click", "CD-Fills", function(e) { show_district_popup(e, e.features[0].properties); }); // doesn't work if not all districts are shaded map.on("click", function(e) { map_click_to_district(e, function(feature) { show_district_popup(e, feature); }) }); var current_legislators_by_district = { "AL4": { "name": "Rep. Robert Aderholt [R]" }, "FL12": { "name": "Rep. Gus Bilirakis [R]" }, "GA2": { "name": "Rep. Sanford Bishop [D]" }, "FL16": { "name": "Rep. Vern Buchanan [R]" }, "CA41": { "name": "Rep. Ken Calvert [R]" }, "IN7": { "name": "Rep. André Carson [D]" }, "TX31": { "name": "Rep. John R. Carter [R]" }, "FL14": { "name": "Rep. Kathy Castor [D]" }, "CA28": { "name": "Rep. Judy Chu [D]" }, "NY9": { "name": "Rep. Yvette Clarke [D]" }, "MO5": { "name": "Rep. Emanuel Cleaver [D]" }, "SC6": { "name": "Rep. James “Jim” Clyburn [D]" }, "TN9": { "name": "Rep. Steve Cohen [D]" }, "OK4": { "name": "Rep. Tom Cole [R]" }, "VA11": { "name": "Rep. Gerald Connolly [D]" }, "CA21": { "name": "Rep. Jim Costa [D]" }, "CT2": { "name": "Rep. Joe Courtney [D]" }, "AR1": { "name": "Rep. Eric “Rick” Crawford [R]" }, "TX28": { "name": "Rep. Henry Cuellar [D]" }, "IL7": { "name": "Rep. Danny Davis [D]" }, "CO1": { "name": "Rep. Diana DeGette [D]" }, "CT3": { "name": "Rep. Rosa DeLauro [D]" }, "TN4": { "name": "Rep. Scott DesJarlais [R]" }, "FL26": { "name": "Rep. Mario Diaz\u002DBalart [R]" }, "TX37": { "name": "Rep. Lloyd Doggett [D]" }, "TN3": { "name": "Rep. Charles “Chuck” Fleischmann [R]" }, "NC5": { "name": "Rep. Virginia Foxx [R]" }, "CA8": { "name": "Rep. John Garamendi [D]" }, "AZ9": { "name": "Rep. Paul Gosar [R]" }, "MO6": { "name": "Rep. Sam Graves [R]" }, "TX9": { "name": "Rep. Al Green [D]" }, "VA9": { "name": "Rep. Morgan Griffith [R]" }, "AZ7": { "name": "Rep. Raúl Grijalva [D]" }, "KY2": { "name": "Rep. Brett Guthrie [R]" }, "MD1": { "name": "Rep. Andy Harris [R]" }, "CT4": { "name": "Rep. James “Jim” Himes [D]" }, "MD5": { "name": "Rep. Steny Hoyer [D]" }, "MI4": { "name": "Rep. Bill Huizenga [R]" }, "GA4": { "name": "Rep. Henry C. “Hank” Johnson [D]" }, "OH4": { "name": "Rep. Jim Jordan [R]" }, "OH9": { "name": "Rep. Marcy Kaptur [D]" }, "MA9": { "name": "Rep. William R. Keating [D]" }, "PA16": { "name": "Rep. Mike Kelly [R]" }, "WA2": { "name": "Rep. Rick Larsen [D]" }, "CT1": { "name": "Rep. John Larson [D]" }, "OH5": { "name": "Rep. Robert Latta [R]" }, "CA18": { "name": "Rep. Zoe Lofgren [D]" }, "OK3": { "name": "Rep. Frank Lucas [R]" }, "MA8": { "name": "Rep. Stephen Lynch [D]" }, "CA7": { "name": "Rep. Doris Matsui [D]" }, "TX10": { "name": "Rep. Michael McCaul [R]" }, "CA5": { "name": "Rep. Tom McClintock [R]" }, "MN4": { "name": "Rep. Betty McCollum [D]" }, "MA2": { "name": "Rep. James “Jim” McGovern [D]" }, "NY5": { "name": "Rep. Gregory Meeks [D]" }, "WI4": { "name": "Rep. Gwen Moore [D]" }, "NY12": { "name": "Rep. Jerrold Nadler [D]" }, "MA1": { "name": "Rep. Richard Neal [D]" }, "DC0": { "name": "Rep. Eleanor Holmes Norton [D]" }, "NJ6": { "name": "Rep. Frank Pallone [D]" }, "CA11": { "name": "Rep. Nancy Pelosi [D]" }, "ME1": { "name": "Rep. Chellie Pingree [D]" }, "IL5": { "name": "Rep. Mike Quigley [D]" }, "KY5": { "name": "Rep. Harold “Hal” Rogers [R]" }, "AL3": { "name": "Rep. Mike Rogers [R]" }, "LA1": { "name": "Rep. Steve Scalise [R]" }, "IL9": { "name": "Rep. Janice “Jan” Schakowsky [D]" }, "AZ1": { "name": "Rep. David Schweikert [R]" }, "GA8": { "name": "Rep. Austin Scott [R]" }, "GA13": { "name": "Rep. David Scott [D]" }, "VA3": { "name": "Rep. Robert “Bobby” Scott [D]" }, "AL7": { "name": "Rep. Terri Sewell [D]" }, "CA32": { "name": "Rep. Brad Sherman [D]" }, "ID2": { "name": "Rep. Michael “Mike” Simpson [R]" }, "WA9": { "name": "Rep. Adam Smith [D]" }, "NE3": { "name": "Rep. Adrian Smith [R]" }, "NJ4": { "name": "Rep. Christopher “Chris” Smith [R]" }, "CA38": { "name": "Rep. Linda Sánchez [D]" }, "MS2": { "name": "Rep. Bennie Thompson [D]" }, "CA4": { "name": "Rep. Mike Thompson [D]" }, "PA15": { "name": "Rep. Glenn Thompson [R]" }, "NY20": { "name": "Rep. Paul Tonko [D]" }, "OH10": { "name": "Rep. Michael Turner [R]" }, "NY7": { "name": "Rep. Nydia Velázquez [D]" }, "MI5": { "name": "Rep. Tim Walberg [R]" }, "FL25": { "name": "Rep. Debbie Wasserman Schultz [D]" }, "CA43": { "name": "Rep. Maxine Waters [D]" }, "FL11": { "name": "Rep. Daniel Webster [R]" }, "SC2": { "name": "Rep. Joe Wilson [R]" }, "FL24": { "name": "Rep. Frederica Wilson [D]" }, "VA1": { "name": "Rep. Robert Wittman [R]" }, "AR3": { "name": "Rep. Steve Womack [R]" }, "NV2": { "name": "Rep. Mark Amodei [R]" }, "OR1": { "name": "Rep. Suzanne Bonamici [D]" }, "WA1": { "name": "Rep. Suzan DelBene [D]" }, "KY4": { "name": "Rep. Thomas Massie [R]" }, "IL11": { "name": "Rep. Bill Foster [D]" }, "NV1": { "name": "Rep. Dina Titus [D]" }, "CA1": { "name": "Rep. Doug LaMalfa [R]" }, "CA2": { "name": "Rep. Jared Huffman [D]" }, "CA6": { "name": "Rep. Ami Bera [D]" }, "CA14": { "name": "Rep. Eric Swalwell [D]" }, "CA26": { "name": "Rep. Julia Brownley [D]" }, "CA25": { "name": "Rep. Raul Ruiz [D]" }, "CA39": { "name": "Rep. Mark Takano [D]" }, "CA52": { "name": "Rep. Juan Vargas [D]" }, "CA50": { "name": "Rep. Scott Peters [D]" }, "FL22": { "name": "Rep. Lois Frankel [D]" }, "KY6": { "name": "Rep. Garland “Andy” Barr [R]" }, "MO2": { "name": "Rep. Ann Wagner [R]" }, "NC9": { "name": "Rep. Richard Hudson [R]" }, "NY6": { "name": "Rep. Grace Meng [D]" }, "NY8": { "name": "Rep. Hakeem Jeffries [D]" }, "OH3": { "name": "Rep. Joyce Beatty [D]" }, "OH14": { "name": "Rep. David Joyce [R]" }, "PA10": { "name": "Rep. Scott Perry [R]" }, "TX14": { "name": "Rep. Randy Weber [R]" }, "TX20": { "name": "Rep. Joaquin Castro [D]" }, "TX25": { "name": "Rep. Roger Williams [R]" }, "TX33": { "name": "Rep. Marc Veasey [D]" }, "WI2": { "name": "Rep. Mark Pocan [D]" }, "IL2": { "name": "Rep. Robin Kelly [D]" }, "MO8": { "name": "Rep. Jason Smith [R]" }, "MA5": { "name": "Rep. Katherine Clark [D]" }, "NJ1": { "name": "Rep. Donald Norcross [D]" }, "NC12": { "name": "Rep. Alma Adams [D]" }, "AL6": { "name": "Rep. Gary Palmer [R]" }, "AR2": { "name": "Rep. French Hill [R]" }, "AR4": { "name": "Rep. Bruce Westerman [R]" }, "CA10": { "name": "Rep. Mark DeSaulnier [D]" }, "CA33": { "name": "Rep. Pete Aguilar [D]" }, "CA36": { "name": "Rep. Ted Lieu [D]" }, "CA35": { "name": "Rep. Norma Torres [D]" }, "GA1": { "name": "Rep. Earl “Buddy” Carter [R]" }, "GA11": { "name": "Rep. Barry Loudermilk [R]" }, "GA12": { "name": "Rep. Rick Allen [R]" }, "IL12": { "name": "Rep. Mike Bost [R]" }, "MA6": { "name": "Rep. Seth Moulton [D]" }, "MI2": { "name": "Rep. John Moolenaar [R]" }, "MI6": { "name": "Rep. Debbie Dingell [D]" }, "MN6": { "name": "Rep. Tom Emmer [R]" }, "NC7": { "name": "Rep. David Rouzer [R]" }, "NJ12": { "name": "Rep. Bonnie Watson Coleman [D]" }, "NY21": { "name": "Rep. Elise Stefanik [R]" }, "PA2": { "name": "Rep. Brendan Boyle [D]" }, "TX36": { "name": "Rep. Brian Babin [R]" }, "VA8": { "name": "Rep. Donald Beyer [D]" }, "VI0": { "name": "Rep. Stacey Plaskett [D]" }, "WA4": { "name": "Rep. Dan Newhouse [R]" }, "WI6": { "name": "Rep. Glenn Grothman [R]" }, "AS0": { "name": "Rep. Aumua Amata Radewagen [R]" }, "MS1": { "name": "Rep. Trent Kelly [R]" }, "IL16": { "name": "Rep. Darin LaHood [R]" }, "OH8": { "name": "Rep. Warren Davidson [R]" }, "KY1": { "name": "Rep. James Comer [R]" }, "PA3": { "name": "Rep. Dwight Evans [D]" }, "IL10": { "name": "Rep. Bradley “Brad” Schneider [D]" }, "AZ5": { "name": "Rep. Andy Biggs [R]" }, "CA17": { "name": "Rep. Ro Khanna [D]" }, "CA19": { "name": "Rep. Jimmy Panetta [D]" }, "CA24": { "name": "Rep. Salud Carbajal [D]" }, "CA44": { "name": "Rep. Nanette Barragán [D]" }, "CA46": { "name": "Rep. Luis Correa [D]" }, "FL2": { "name": "Rep. Neal Dunn [R]" }, "FL5": { "name": "Rep. John Rutherford [R]" }, "FL9": { "name": "Rep. Darren Soto [D]" }, "FL21": { "name": "Rep. Brian Mast [R]" }, "IL8": { "name": "Rep. Raja Krishnamoorthi [D]" }, "LA3": { "name": "Rep. Clay Higgins [R]" }, "LA4": { "name": "Rep. Mike Johnson [R]" }, "MD8": { "name": "Rep. Jamie Raskin [D]" }, "MI1": { "name": "Rep. Jack Bergman [R]" }, "NE2": { "name": "Rep. Don Bacon [R]" }, "NJ5": { "name": "Rep. Josh Gottheimer [D]" }, "NY13": { "name": "Rep. Adriano Espaillat [D]" }, "PA1": { "name": "Rep. Brian Fitzpatrick [R]" }, "PA11": { "name": "Rep. Lloyd Smucker [R]" }, "TN8": { "name": "Rep. David Kustoff [R]" }, "TX34": { "name": "Rep. Vicente Gonzalez [D]" }, "TX19": { "name": "Rep. Jodey Arrington [R]" }, "WA7": { "name": "Rep. Pramila Jayapal [D]" }, "KS4": { "name": "Rep. Ron Estes [R]" }, "SC5": { "name": "Rep. Ralph Norman [R]" }, "CA34": { "name": "Rep. Jimmy Gomez [D]" }, "TX27": { "name": "Rep. Michael Cloud [R]" }, "OH12": { "name": "Rep. Troy Balderson [R]" }, "OK1": { "name": "Rep. Kevin Hern [R]" }, "NY25": { "name": "Rep. Joseph Morelle [D]" }, "PA5": { "name": "Rep. Mary Gay Scanlon [D]" }, "HI1": { "name": "Rep. Ed Case [D]" }, "NV4": { "name": "Rep. Steven Horsford [D]" }, "AZ4": { "name": "Rep. Greg Stanton [D]" }, "CA9": { "name": "Rep. Josh Harder [D]" }, "CA49": { "name": "Rep. Mike Levin [D]" }, "CO2": { "name": "Rep. Joe Neguse [D]" }, "CO6": { "name": "Rep. Jason Crow [D]" }, "CT5": { "name": "Rep. Jahana Hayes [D]" }, "FL17": { "name": "Rep. Gregory Steube [R]" }, "GA6": { "name": "Rep. Lucy McBath [D]" }, "ID1": { "name": "Rep. Russ Fulcher [R]" }, "IL4": { "name": "Rep. Jesús “Chuy” García [D]" }, "IL6": { "name": "Rep. Sean Casten [D]" }, "IL14": { "name": "Rep. Lauren Underwood [D]" }, "IN4": { "name": "Rep. James Baird [R]" }, "KS3": { "name": "Rep. Sharice Davids [D]" }, "MA3": { "name": "Rep. Lori Trahan [D]" }, "MA7": { "name": "Rep. Ayanna Pressley [D]" }, "MI11": { "name": "Rep. Haley Stevens [D]" }, "MI12": { "name": "Rep. Rashida Tlaib [D]" }, "MN2": { "name": "Rep. Angie Craig [D]" }, "MN5": { "name": "Rep. Ilhan Omar [D]" }, "MN8": { "name": "Rep. Pete Stauber [R]" }, "MS3": { "name": "Rep. Michael Guest [R]" }, "NH1": { "name": "Rep. Chris Pappas [D]" }, "NJ2": { "name": "Rep. Jefferson Van Drew [R]" }, "NJ11": { "name": "Rep. Mikie Sherrill [D]" }, "NV3": { "name": "Rep. Susie Lee [D]" }, "NY14": { "name": "Rep. Alexandria Ocasio\u002DCortez [D]" }, "PA4": { "name": "Rep. Madeleine Dean [D]" }, "PA6": { "name": "Rep. Chrissy Houlahan [D]" }, "PA9": { "name": "Rep. Daniel Meuser [R]" }, "PA13": { "name": "Rep. John Joyce [R]" }, "PA14": { "name": "Rep. Guy Reschenthaler [R]" }, "SC4": { "name": "Rep. William Timmons [R]" }, "SD0": { "name": "Rep. Dusty Johnson [R]" }, "TN2": { "name": "Rep. Tim Burchett [R]" }, "TN6": { "name": "Rep. John W. Rose [R]" }, "TN7": { "name": "Rep. Mark E. Green [R]" }, "TX2": { "name": "Rep. Dan Crenshaw [R]" }, "TX5": { "name": "Rep. Lance Gooden [R]" }, "TX7": { "name": "Rep. Lizzie Fletcher [D]" }, "TX16": { "name": "Rep. Veronica Escobar [D]" }, "TX21": { "name": "Rep. Chip Roy [R]" }, "TX29": { "name": "Rep. Sylvia Garcia [D]" }, "VA6": { "name": "Rep. Ben Cline [R]" }, "WA8": { "name": "Rep. Kim Schrier [D]" }, "WI1": { "name": "Rep. Bryan Steil [R]" }, "WV1": { "name": "Rep. Carol Miller [R]" }, "ME2": { "name": "Rep. Jared Golden [D]" }, "NC3": { "name": "Rep. Gregory Murphy [R]" }, "MD7": { "name": "Rep. Kweisi Mfume [D]" }, "WI7": { "name": "Rep. Thomas Tiffany [R]" }, "CA48": { "name": "Rep. Darrell Issa [R]" }, "TX17": { "name": "Rep. Pete Sessions [R]" }, "CA22": { "name": "Rep. David Valadao [R]" }, "AL1": { "name": "Rep. Barry Moore [R]" }, "CA23": { "name": "Rep. Jay Obernolte [R]" }, "CA40": { "name": "Rep. Young Kim [R]" }, "CA51": { "name": "Rep. Sara Jacobs [D]" }, "CO4": { "name": "Rep. Lauren Boebert [R]" }, "FL3": { "name": "Rep. Katherine “Kat” Cammack [R]" }, "FL18": { "name": "Rep. Scott Franklin [R]" }, "FL19": { "name": "Rep. Byron Donalds [R]" }, "FL28": { "name": "Rep. Carlos Gimenez [R]" }, "FL27": { "name": "Rep. Maria Salazar [R]" }, "GA5": { "name": "Rep. Nikema Williams [D]" }, "GA9": { "name": "Rep. Andrew Clyde [R]" }, "GA14": { "name": "Rep. Marjorie Taylor Greene [R]" }, "IA2": { "name": "Rep. Ashley Hinson [R]" }, "IA1": { "name": "Rep. Mariannette Miller\u002DMeeks [R]" }, "IA4": { "name": "Rep. Randy Feenstra [R]" }, "IL15": { "name": "Rep. Mary Miller [R]" }, "IN1": { "name": "Rep. Frank Mrvan [D]" }, "IN5": { "name": "Rep. Victoria Spartz [R]" }, "KS1": { "name": "Rep. Tracey Mann [R]" }, "MA4": { "name": "Rep. Jake Auchincloss [D]" }, "MI9": { "name": "Rep. Lisa McClain [R]" }, "MN7": { "name": "Rep. Michelle Fischbach [R]" }, "NC2": { "name": "Rep. Deborah Ross [D]" }, "NM3": { "name": "Rep. Teresa Leger Fernandez [D]" }, "NY2": { "name": "Rep. Andrew Garbarino [R]" }, "NY11": { "name": "Rep. Nicole Malliotakis [R]" }, "NY15": { "name": "Rep. Ritchie Torres [D]" }, "OK5": { "name": "Rep. Stephanie Bice [R]" }, "OR2": { "name": "Rep. Cliff Bentz [R]" }, "SC1": { "name": "Rep. Nancy Mace [R]" }, "TN1": { "name": "Rep. Diana Harshbarger [R]" }, "TX4": { "name": "Rep. Patrick “Pat” Fallon [R]" }, "TX11": { "name": "Rep. August Pfluger [R]" }, "TX13": { "name": "Rep. Ronny Jackson [R]" }, "TX22": { "name": "Rep. Troy Nehls [R]" }, "TX23": { "name": "Rep. Ernest “Tony” Gonzales [R]" }, "TX24": { "name": "Rep. Beth Van Duyne [R]" }, "UT1": { "name": "Rep. Blake Moore [R]" }, "UT4": { "name": "Rep. Clarence “Burgess” Owens [R]" }, "WA10": { "name": "Rep. Marilyn Strickland [D]" }, "WI5": { "name": "Rep. Scott Fitzgerald [R]" }, "NY24": { "name": "Rep. Claudia Tenney [R]" }, "LA5": { "name": "Rep. Julia Letlow [R]" }, "LA2": { "name": "Rep. Troy Carter [D]" }, "NM1": { "name": "Rep. Melanie Stansbury [D]" }, "TX6": { "name": "Rep. Jake Ellzey [R]" }, "OH11": { "name": "Rep. Shontel Brown [D]" }, "OH15": { "name": "Rep. Mike Carey [R]" }, "FL20": { "name": "Rep. Sheila Cherfilus\u002DMcCormick [D]" }, "NE1": { "name": "Rep. Mike Flood [R]" }, "MN1": { "name": "Rep. Brad Finstad [R]" }, "NY18": { "name": "Rep. Patrick Ryan [D]" }, "IN2": { "name": "Rep. Rudy Yakym [R]" }, "MT1": { "name": "Rep. Ryan Zinke [R]" }, "AL5": { "name": "Rep. Dale Strong [R]" }, "AZ2": { "name": "Rep. Eli Crane [R]" }, "AZ6": { "name": "Rep. Juan Ciscomani [R]" }, "CA3": { "name": "Rep. Kevin Kiley [R]" }, "CA15": { "name": "Rep. Kevin Mullin [D]" }, "CA37": { "name": "Rep. Sydney Kamlager\u002DDove [D]" }, "CA42": { "name": "Rep. Robert Julio Garcia [D]" }, "CO7": { "name": "Rep. Brittany Pettersen [D]" }, "FL4": { "name": "Rep. Aaron Bean [R]" }, "FL7": { "name": "Rep. Cory Mills [R]" }, "FL10": { "name": "Rep. Maxwell Frost [D]" }, "FL13": { "name": "Rep. Anna Luna [R]" }, "FL15": { "name": "Rep. Laurel Lee [R]" }, "FL23": { "name": "Rep. Jared Moskowitz [D]" }, "GA7": { "name": "Rep. Rich McCormick [R]" }, "GA10": { "name": "Rep. Mike Collins [R]" }, "GU0": { "name": "Rep. James (Jim) Moylan [R]" }, "HI2": { "name": "Rep. Jill Tokuda [D]" }, "IA3": { "name": "Rep. Zachary (Zach) Nunn [R]" }, "IL1": { "name": "Rep. Jonathan Jackson [D]" }, "IL3": { "name": "Rep. Delia Ramirez [D]" }, "IL13": { "name": "Rep. Nicole (Nikki) Budzinski [D]" }, "IL17": { "name": "Rep. Eric Sorensen [D]" }, "IN9": { "name": "Rep. Erin Houchin [R]" }, "KY3": { "name": "Rep. Morgan McGarvey [D]" }, "MD4": { "name": "Rep. Glenn Ivey [D]" }, "MI3": { "name": "Rep. Hillary Scholten [D]" }, "MI10": { "name": "Rep. John James [R]" }, "MI13": { "name": "Rep. Shri Thanedar [D]" }, "MO4": { "name": "Rep. Mark Alford [R]" }, "MO7": { "name": "Rep. Eric Burlison [R]" }, "MS4": { "name": "Rep. Mike Ezell [R]" }, "NC1": { "name": "Rep. Donald Davis [D]" }, "NC4": { "name": "Rep. Valerie Foushee [D]" }, "NC11": { "name": "Rep. Charles (Chuck) Edwards [R]" }, "NJ7": { "name": "Rep. Thomas Kean [R]" }, "NJ8": { "name": "Rep. Robert Jacobsen Menendez [D]" }, "NM2": { "name": "Rep. Gabriel (Gabe) Vasquez [D]" }, "NY1": { "name": "Rep. Nicolas LaLota [R]" }, "NY10": { "name": "Rep. Dan Goldman [D]" }, "NY17": { "name": "Rep. Michael Lawler [R]" }, "NY23": { "name": "Rep. Nicholas Langworthy [R]" }, "OH1": { "name": "Rep. Greg Landsman [D]" }, "OH7": { "name": "Rep. Max Miller [R]" }, "OH13": { "name": "Rep. Emilia Sykes [D]" }, "OK2": { "name": "Rep. Josh Brecheen [R]" }, "OR4": { "name": "Rep. Valerie Hoyle [D]" }, "OR6": { "name": "Rep. Andrea Salinas [D]" }, "PA12": { "name": "Rep. Summer Lee [D]" }, "PA17": { "name": "Rep. Chris Deluzio [D]" }, "RI2": { "name": "Rep. Seth Magaziner [D]" }, "SC7": { "name": "Rep. Russell Fry [R]" }, "TN5": { "name": "Rep. Andrew Ogles [R]" }, "TX1": { "name": "Rep. Nathaniel Moran [R]" }, "TX3": { "name": "Rep. Keith Self [R]" }, "TX8": { "name": "Rep. Morgan Luttrell [R]" }, "TX15": { "name": "Rep. Mónica De La Cruz [R]" }, "TX30": { "name": "Rep. Jasmine Crockett [D]" }, "TX35": { "name": "Rep. Gregorio Casar [D]" }, "TX38": { "name": "Rep. Wesley Hunt [R]" }, "VA2": { "name": "Rep. Jennifer Kiggans [R]" }, "VT0": { "name": "Rep. Becca Balint [D]" }, "WA3": { "name": "Rep. Marie Gluesenkamp Perez [D]" }, "WI3": { "name": "Rep. Derrick Van Orden [R]" }, "WY0": { "name": "Rep. Harriet Hageman [R]" }, "VA4": { "name": "Rep. Jennifer McClellan [D]" }, "RI1": { "name": "Rep. Gabe Amo [D]" }, "UT2": { "name": "Rep. Celeste Maloy [R]" }, "NY3": { "name": "Rep. Thomas Suozzi [D]" }, "NY26": { "name": "Rep. Timothy Kennedy [D]" }, "CA20": { "name": "Rep. Vince Fong [R]" }, "OH6": { "name": "Rep. Michael Rulli [R]" }, "NJ10": { "name": "Rep. LaMonica McIver [D]" }, "WI8": { "name": "Rep. Tony Wied [R]" }, "LA6": { "name": "Rep. Cleo Fields [D]" }, "IN3": { "name": "Rep. Marlin Stutzman [R]" }, "CA31": { "name": "Rep. Gilbert Cisneros [D]" }, "AK0": { "name": "Rep. Nicholas Begich III [R]" }, "AL2": { "name": "Rep. Shomari Figures [D]" }, "AZ3": { "name": "Rep. Yassamin Ansari [D]" }, "AZ8": { "name": "Rep. Abraham Hamadeh [R]" }, "CA12": { "name": "Rep. Lateefah Simon [D]" }, "CA13": { "name": "Rep. Adam Gray [D]" }, "CA16": { "name": "Rep. Sam Liccardo [D]" }, "CA27": { "name": "Rep. George Whitesides [D]" }, "CA29": { "name": "Rep. Luz Rivas [D]" }, "CA30": { "name": "Rep. Laura Friedman [D]" }, "CA45": { "name": "Rep. Derek Tran [D]" }, "CA47": { "name": "Rep. Dave Min [D]" }, "CO3": { "name": "Rep. Jeff Hurd [R]" }, "CO5": { "name": "Rep. Jeff Crank [R]" }, "CO8": { "name": "Rep. Gabe Evans [R]" }, "DE0": { "name": "Rep. Sarah McBride [D]" }, "FL8": { "name": "Rep. Mike Haridopolos [R]" }, "GA3": { "name": "Rep. Brian Jack [R]" }, "IN6": { "name": "Rep. Jefferson Shreve [R]" }, "IN8": { "name": "Rep. Mark Messmer [R]" }, "KS2": { "name": "Rep. Derek Schmidt [R]" }, "MD2": { "name": "Rep. Johnny Olszewski [D]" }, "MD3": { "name": "Rep. Sarah Elfreth [D]" }, "MD6": { "name": "Rep. April McClain Delaney [D]" }, "MI7": { "name": "Rep. Tom Barrett [R]" }, "MI8": { "name": "Rep. Kristen McDonald Rivet [D]" }, "MN3": { "name": "Rep. Kelly Morrison [D]" }, "MO1": { "name": "Rep. Wesley Bell [D]" }, "MO3": { "name": "Rep. Robert Onder [R]" }, "MP0": { "name": "Rep. Kimberlyn King\u002DHinds [R]" }, "MT2": { "name": "Rep. Troy Downing [R]" }, "NC6": { "name": "Rep. Addison McDowell [R]" }, "NC8": { "name": "Rep. Mark Everette Harris [R]" }, "NC10": { "name": "Rep. Pat Harrigan [R]" }, "NC13": { "name": "Rep. Brad Knott [R]" }, "NC14": { "name": "Rep. Tim Moore [R]" }, "ND0": { "name": "Rep. Julie Fedorchak [R]" }, "NH2": { "name": "Rep. Maggie Goodlander [D]" }, "NJ3": { "name": "Rep. Herbert Conaway [D]" }, "NJ9": { "name": "Rep. Nellie Pou [D]" }, "NY4": { "name": "Rep. Laura Gillen [D]" }, "NY16": { "name": "Rep. George Latimer [D]" }, "NY19": { "name": "Rep. Josh Riley [D]" }, "NY22": { "name": "Rep. John Mannion [D]" }, "OH2": { "name": "Rep. David Taylor [R]" }, "OR3": { "name": "Rep. Maxine Dexter [D]" }, "OR5": { "name": "Rep. Janelle Bynum [D]" }, "PA7": { "name": "Rep. Ryan Mackenzie [R]" }, "PA8": { "name": "Rep. Robert Bresnahan [R]" }, "PR0": { "name": "Commish. Pablo José Hernández Rivera [D]" }, "SC3": { "name": "Rep. Sheri Biggs [R]" }, "TX12": { "name": "Rep. Craig Goldman [R]" }, "TX18": { "name": "Rep. Sylvester Turner [D]" }, "TX26": { "name": "Rep. Brandon Gill [R]" }, "TX32": { "name": "Rep. Julie Johnson [D]" }, "UT3": { "name": "Rep. Mike Kennedy [R]" }, "VA5": { "name": "Rep. John J. McGuire [R]" }, "VA7": { "name": "Rep. Eugene Vindman [D]" }, "VA10": { "name": "Rep. Suhas Subramanyam [D]" }, "WA5": { "name": "Rep. Michael Baumgartner [R]" }, "WA6": { "name": "Rep. Emily Randall [D]" }, "WV2": { "name": "Rep. Riley Moore [R]" } }; function show_district_popup(e, feature_properties) { // https://docs.mapbox.com/mapbox-gl-js/example/popup-on-hover/ var district = feature_properties.state_name + (feature_properties.number == "00" ? " At Large" : "’s " + ordinal(parseInt(feature_properties.number)) + " Congressional District"); var url = "/congress/members/" + feature_properties.state + (feature_properties.number == "00" ? "" : "/" + parseInt(feature_properties.number)); var n = $("<div><div style='text-align: center'><div class=district style='font-weight: bold;'></div><div class='repname'></div><div><a>More »</a></div></div>"); n.find('.district').html(district); var key = feature_properties.state + parseInt(feature_properties.number); if (key in current_legislators_by_district) n.find('.repname').text(current_legislators_by_district[key].name); else n.find('.repname').text("Vacancy"); n.find('a').attr('href', url); if (url == current_district_popup) { // click to toggle visibility hover_popup.remove(); current_district_popup = null; return; } current_district_popup = url; //var coord = feature.geometry.coordinates[0][0]; // works for polygon but not multipolygon features //var coord = [feature_properties.label_pt_lon, feature_properties.label_pt_lat]; // from census data but not the actual label points? hover_popup .setLngLat(e.lngLat) .setHTML(n.html()) .addTo(map); } // Update the map embed iframe code to match the current viewport when the user moves the map map.on("moveend", update_embed_code_bounds); function update_embed_code_bounds() { var b = map.getBounds(); $("#embedbounds").text(Math.round(b.getWest()*1000)/1000 + "," + Math.round(b.getNorth()*1000)/1000 + "," + Math.round(b.getEast()*1000)/1000 + "," + Math.round(b.getSouth()*1000)/1000); } update_embed_code_bounds(); // initialize // Fix the form layout. if ($(window).width() > 768) { var input = $('#user-address'); var w = $('#user-address').parents("form").innerWidth(); $('#user-address').parents("form").find("button").each(function() { w -= $(this).outerWidth(); }) input.width(w-50); } function go_to_district(state, number, fragment) { if (number != 0) { // URLs don't use zero-padding var path = "/congress/members/" + state + "/" + number; if (path == window.location.pathname) { // The page won't reload. Just add a marker & alert. map.addMarker(q, pt); alert("That address is in the same congressional district."); } window.location = path + (fragment || ""); } else { // There is no district page for at-large districts. Redirect to the state page. window.location = "/congress/members/" + state; } } // Handle geocoding result. function go_to_point(pt, q) { // Query Mapbox API to get what district is at this location. latlng_to_district({ lat: pt[1], lng: pt[0]}, function(district) { if (!district) { alert("That location does not seem to be in a United States Congressional District."); return; } var fragment = "#q=" + encodeURIComponent(q) + "&marker_lng=" + pt[0] + "&marker_lat=" + pt[1]; go_to_district(district.state, parseInt(district.number), fragment); // remove zero-padding }); } function do_address(addr) { if (!addr) addr = $("#user-address").val(); if (addr == "") { window.location = "/congress/members/map"; return; } // this special query triggers geocoding if (addr == "my location") { do_by_current_location(); return; } // If a congressional district number is given, skip the geocoding step. // Try matching XXNN, with an optional dash or space, then check that the state and district are a valid district (add zero-padding to the district number). var match = /^\s*([A-Za-z]{2})[- ]?(\d+)$/.exec(addr.toUpperCase()); if (match && ((match[1] + (match[2].length == 2 ? "" : "0") + match[2]) in bboxes)) { go_to_district(match[1], parseInt(match[2])); return; } address_to_latlng(addr, function (pt) { go_to_point(pt, addr); }); } function do_by_current_location() { if ("geolocation" in navigator) navigator.geolocation.getCurrentPosition(function(position) { go_to_point([position.coords.longitude, position.coords.latitude], ""); }); } // utility function function parse_qs(qs) { // Parse something that looks like a query string. Based on // http://stackoverflow.com/a/2880929/125992. var match, pl = /\+/g, // Regex for replacing addition symbol with a space search = /([^&=]+)=?([^&]*)/g, decode = function (s) { return decodeURIComponent(s.replace(pl, " ")); }, ret = {}; while (match = search.exec(qs)) ret[decode(match[1])] = decode(match[2]); return ret; } var q = parse_qs(window.location.hash.substring(1)); if (q.address) do_address(q.address); else if (q.my_location) do_by_current_location(); if (q.q) $('#user-address').val(q.q); if (q.marker_lat) map.addMarker(q.q ? q.q : "Location", [parseFloat(q.marker_lng), parseFloat(q.marker_lat)]); </script> <!-- Quantcast Tag --> <script type="text/javascript"> var _qevents = _qevents || []; (function() { var elem = document.createElement('script'); elem.src = (document.location.protocol == "https:" ? "https://secure" : "http://edge") + ".quantserve.com/quant.js"; elem.async = true; elem.type = "text/javascript"; var scpt = document.getElementsByTagName('script')[0]; scpt.parentNode.insertBefore(elem, scpt); })(); _qevents.push({ qacct:"p-NscxJMTcyb6nu" }); </script> <noscript> <div style="display:none;"> <img src="//pixel.quantserve.com/pixel/p-NscxJMTcyb6nu.gif" border="0" height="1" width="1" alt="Quantcast"/> </div> </noscript> <!-- End Quantcast tag --> <!-- LinkedIn Insight Tag --> <script type="text/javascript"> _linkedin_partner_id = "6740042"; window._linkedin_data_partner_ids = window._linkedin_data_partner_ids || []; window._linkedin_data_partner_ids.push(_linkedin_partner_id); </script><script type="text/javascript"> (function(l) { if (!l){window.lintrk = function(a,b){window.lintrk.q.push([a,b])}; window.lintrk.q=[]} var s = document.getElementsByTagName("script")[0]; var b = document.createElement("script"); b.type = "text/javascript";b.async = true; b.src = "https://snap.licdn.com/li.lms-analytics/insight.min.js"; s.parentNode.insertBefore(b, s);})(window.lintrk); </script> <noscript> <img height="1" width="1" style="display:none;" alt="" src="https://px.ads.linkedin.com/collect/?pid=6740042&fmt=gif" /> </noscript> </body> </html>