{"version":3,"sources":["mapbox-token.js","res/img/pin.png","res/img/Labels.svg","res/img/Legend Coverup.png","data.js","Map.js","sections_311.js","utils.js","sections_scoring.js","MapLegend.js","App.js","serviceWorker.js","index.js"],"names":["module","exports","__webpack_require__","p","issue_density_map","issue_density_map_module","category_counts","category_counts_module","type_counts","type_counts_module","time_data","_","binned_issues_on_time","d","geocode","unclosed_data","unclosed_issues","lngLat","feature","d3","geometry","coordinates","slice","h3Geocode","level","_lngLat","_lngLat2","Object","slicedToArray","lng","lat","h3","CODE_TO_FEATURE","CATEGORY_NAMES","id","hexes","forEach","featureIndex","obj","properties","fromPairs","entries","flatMap","kv","_kv","k","v","Array","isArray","map","_ref","_ref2","sub_k","sub_v","code","alpha","b311_issue_count","total_population","census_b01003001","census_area","hex_area","_area","proportion_of_census_geometry_in_hex","Math","min","hex_population","issues_normalized_by_population","c","ratio","on_time_pc_smoothed","pc_unclosed_smoothed","b311_unclosed_issue_count","count","fp","sidewalk_score","sidewalks_area_score","sidewalks_area","walkability_score","_count","social_need_score","census_b17020002","census_b17020001","census_b01001020","census_b01001021","census_b01001022","census_b01001023","census_b01001024","census_b01001025","census_b01001044","census_b01001045","census_b01001046","census_b01001047","census_b01001048","census_b01001049","census_b01001001","census_b11004004","census_b11004011","census_b11004017","census_b11004001","max_sidewalk_score","max_walkability_score","max_social_need_score","Number","isNaN","filter","mean_sidewalk_score","mean_walkability_score","mean_social_need_score","mapboxgl","accessToken","mapboxToken","markerInstance","params","URL","document","baseURI","searchParams","labelsAreHere","reverse","youAreHere","has","get","bostonCenter","Map","showNeighborhoods","property","color","opacity","fadeOpacity","stroke","showYouAreHere","onHover","onUnhover","composition","sectionIndex","clickZoomable","container","useRef","_useState","useState","_useState2","setMap","_useState3","_useState4","mapReady","setMapReady","features","youAreHereMarker","Marker","src","img","createElement","style","width","transform","markerImg","pin","offset","x","y","setLngLat","labelMarker","className","concat","labelImg","labels","useEffect","current","center","zoom","interactive","on","moveLayer","addSource","type","data","City_of_Boston_Boundary","maxzoom","ceil","buffer","hexBefore","addLayer","source","paint","line-color","line-width","line-opacity","fill-color","fill-opacity","transition","duration","delay","circle-radius","circle-radius-transition","circle-opacity-transition","circle-color","addTo","hoveredHexCodes","e","length","setFeatureState","hover","isStyleLoaded","remove","animating","flip","fn","flyTo","bearing","speed","target","targetZoom","display","console","log","setPaintProperty","extent","domain","scale","range","scores","sort","q","_composition","pc_1","pc_2","pc_3","toConsumableArray","pc","s","mapboxFillComposition","stops","default","mapboxFill","max","setLayoutProperty","blipStartTime","performance","now","requestAnimationFrame","frame","timestamp","PI","radius","sin","cos","off","react_default","a","ref","sectionOrder","divergingLogScale","base","clamp","groupedByCategory","categories","category","categoryTypeSubtitle","t","join","sections","mapOfBoston","buttonTitle","body","defaultState","format","assign","legendFormat","introHex","issueDensityMap","hoverInfo","hoverFeatures","sectionState","mean","sum","undefined","showingIssues","setSectionState","linkClick","key","onClick","mostCommonIssues","_ref3","percent","abs","toLowerCase","_ref4","str","split","i","charAt","toUpperCase","titleCase","timeliness","_ref5","conclusions","appIntro","Fragment","propHoverInfo","meanScore","value","thing","caption","pcLabel","firstThing","secondThing","thirdThing","allThreeThings","round","sections_scoring_TriangleSlider","onChange","leading","triArea","b","_a","xa","ya","_b","xb","yb","_c","xc","yc","TriangleSlider","_ref6","areaGen","R","sqrt","pow","twopi","o","pathData","event","total","areas","arr","makeComposition","area","triRef","useCallback","node","dragged","parentElement","circleRefCurrent","attr","call","circleRef","version","xmlns","height","viewBox","x1","y1","x2","y2","gradientTransform","stopColor","pointerEvents","fill","cx","cy","r","strokeWidth","_ref7","_ref8","MapLegend","observedVsExpected","legendLabels","tradeoff_score","category_ratio_LIVING CONDITIONS","category_ratio_PARKING","category_ratio_TRASH, RECYCLING, AND WASTE","category_ratio_STREETS, SIDEWALKS, AND PARKS","category_ratio_BUILDING AND CONSTRUCTION","category_ratio_SNOW","category_ratio_ANIMALS","category_ratio_TRANSPORTATION, VEHICLES, AND BICYCLES","title","overflow","clipPath","fontSize","MapOverlay","children","Sidebar","SectionNavigator","setSectionIndex","numSections","lastSection","App_NextButton","n","NextButton","App","hoveredBefore","setHoveredBefore","_setSectionIndex","_useState5","_useState6","moduleName","setModuleName","311","sections311","scoring","sectionsScoring","sectionOrder311","sectionOrderScoring","section","_useState7","_useState8","_useState9","_useState10","setHoverFeatures","appIntro311","appIntroScoring","App_Sidebar","App_SectionNavigator","App_MapOverlay","src_MapLegend","navigator","platform","match","Map_Map","Boolean","window","location","hostname","ReactDOM","render","src_App_0","getElementById","serviceWorker","ready","then","registration","unregister"],"mappings":"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","file":"static/js/main.51b4196c.chunk.js","sourcesContent":["module.exports = \"pk.eyJ1Ijoiam9obm55Y3JpY2giLCJhIjoiY2pzbHh2NnRzMW9iYzQ5cW9weHVjMW9nNCJ9.2Hss5rN0Nyq2fdWEDX7QjQ\"","module.exports = __webpack_public_path__ + \"static/media/pin.d92651c5.png\";","module.exports = __webpack_public_path__ + \"static/media/Labels.f380b7c9.svg\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAbIAAABKCAYAAADexdHcAAAACXBIWXMAABYlAAAWJQFJUiTwAAAFFmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDAgNzkuMTYwNDUxLCAyMDE3LzA1LzA2LTAxOjA4OjIxICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKE1hY2ludG9zaCkiIHhtcDpDcmVhdGVEYXRlPSIyMDE5LTA1LTIwVDEwOjU2OjU0LTA0OjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAxOS0wNS0yMVQxMDoyNjo0NC0wNDowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOS0wNS0yMVQxMDoyNjo0NC0wNDowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1MmI1YzhlZi02MmZlLTQzMGUtYTRmNy1jNzZkN2U0MmM1N2YiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTJiNWM4ZWYtNjJmZS00MzBlLWE0ZjctYzc2ZDdlNDJjNTdmIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6NTJiNWM4ZWYtNjJmZS00MzBlLWE0ZjctYzc2ZDdlNDJjNTdmIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo1MmI1YzhlZi02MmZlLTQzMGUtYTRmNy1jNzZkN2U0MmM1N2YiIHN0RXZ0OndoZW49IjIwMTktMDUtMjBUMTA6NTY6NTQtMDQ6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoTWFjaW50b3NoKSIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7oZB8aAAADUklEQVR42u3by1FrUQwEQOVDEqRB/oGILUVR5mf7Hml6MQH0GdlTD3j1+vLWIiIiU1MeQUREDJmIiIghExERmTlkxjQnuhaRVUNWn5L0Zc7NzM3MPHzI6kZSSufWNTezz/XAIatfJOXQubO+2HTNzD10yOofSRqxZDM3MzP3kUNWd0xK6elmXXMz+1wfMWT1wKSUPunwda1rXTNf5q5hD3DqARR3jFvXutb1YeYaWPpJB1DcUR92XWe4fa6HmWtw6VcfQKJb17pmdt/HuWs4/oojSHTrmpuZ+Vh3LcE/4wgSza1rbmbm09218AHufQSJZl3rWte6HuOupfh7HEBxczOvc7vvheZaXvpfDyDRrWtdb3aXrveaK6T0nx5AolvX3Mw+16PNFYS/9RjczNzMzEPdHiHLzM2c4nbfhkzx3NzMhkzXhkzx3NzMhkzXhszPlR08N7Mh07UhM2S+3HRtyHRtyAyZg+dmNmS6NmSGzMFzMxsyXRsyQ+bguZkNma4NmfJ1zWzIdG3IlM/MzWzIdH2925D5cuNmNmS6NmTKZ+ZmNmS6NmTKZ+ZmNmS6NmTKZ+bWtfs2ZMpn5mbmZjZkymfm9n8ldc1syJTPzG3IdM1syJTPrGs3zmzIlM/Mbch0zWzIlM/Mbch0zWzIlM/Mzc3MbMgcvK65mZkNmfKZubmZmQ2Z8pm5uZmZDZnymbm5mQ2ZIfOXbLrmZmY2ZMo3ZLrmZmY2ZMo3ZLrmZmY2ZMo3ZLp248yGTPnczNzMzIZM+dzM3MzMhkz53MzczMy/G7IOLN7vyLiZfanrerD5qyFLeAxmbl3rWtdL3N89RAeVnm7WNTezz/VId4U8RP8x3MzczMyHu7cve98piW5dc7tx5hHmWvoY/aAkuoubebHbfS8w18LH6Acn0czN7HOt62Pdm/652k9OopnbjTO77+PcteAx+uIUNzM38wLzWPfknzn3YeFm5t7nZh5gnviHEX14Et3F7cZ1zXyVedovUXtQmLmZd7nd96HuGvIYPTjM3JvdzO77cvfpfxXUS1LcMWY3zuy+n+yuQx+jl6a4mbmZfa73DFkHFc6d69a1rpmXD9nHx2iJOXzvIOJzvW7IREREDJmIiBgyERERQyYiIvKsvAMKnucUEZwe0gAAAABJRU5ErkJggg==\"","// note: minSize = h3 size minus 2.\nimport * as hexes from \"./res/data/result_8_min.json\" // note: big file\nimport * as issue_density_map_module from \"./res/data/issue_density_map_10.json\"\nimport * as category_counts_module from \"./res/data/category_counts_10.json\"\nimport * as type_counts_module from \"./res/data/type_counts.json\"\nimport categories from \"./res/data/categories_out.json\"\nimport * as binned_issues_on_time from \"./res/data/binned_issues_on_time_10.json\"\nimport * as unclosed_issues from \"./res/data/unclosed_issues_10.json\"\nimport * as h3 from \"h3-js\"\nimport * as d3 from \"d3\"\nimport * as _ from \"lodash\"\nimport {fromPairs} from \"lodash\"\nexport const H3_LEVEL = 10 // 10 // 9 // the level of the geojson hexbins\nexport const MISSING = null\n\nconst issue_density_map = issue_density_map_module.data\nconst category_counts = category_counts_module.data\nconst type_counts = type_counts_module.data\nconst time_data = _.mapValues(\n _.groupBy(binned_issues_on_time.default, d => d.geocode),\n _.first\n)\nconst unclosed_data = _.mapValues(\n _.groupBy(unclosed_issues.default, d => d.geocode),\n _.first\n)\n\nexport {hexes, categories, type_counts}\n\nconst flattenNestedObjects = obj =>\n // Flatten nested objects by one level.\n fromPairs(\n Object.entries(obj).flatMap(kv => {\n let [k, v] = kv\n if (typeof v === \"object\" && !Array.isArray(v) && !!v) {\n return Object.entries(v).map(([sub_k, sub_v]) => [\n k + \"_\" + sub_k,\n sub_v\n ])\n } else {\n return [kv]\n }\n })\n )\n\nexport const lngLat = feature => {\n // Extract the center from a hexagon\n let lng = d3.mean(feature.geometry.coordinates[0].slice(1), d => d[1])\n let lat = d3.mean(feature.geometry.coordinates[0].slice(1), d => d[0])\n return [lng, lat]\n}\n\nexport const h3Geocode = (feature, level) => {\n // note: sampling two opposite coordinates would suffice\n let [lng, lat] = lngLat(feature)\n return h3.geoToH3(lng, lat, level)\n}\n\nconst smooth = (a, b, d, alpha) => (a + d * alpha) / (b + alpha)\n\nexport const CODE_TO_FEATURE = {}\n\nexport const CATEGORY_NAMES = [\n \"LIVING CONDITIONS\",\n \"PARKING\",\n \"TRASH, RECYCLING, AND WASTE\",\n \"STREETS, SIDEWALKS, AND PARKS\"\n]\n\n// Every separate dataset is processed in a separate enclosing scope\nlet id = 0 // used as a unique identifier for every feature\nhexes.features.forEach((feature, featureIndex) => {\n // Mapbox doesn't like nested objects; flatten them to e.g. census_b07001057\n // Note that this doesn't iterate to a fixed-point; it de-nests objects one level.\n // featureIndex == 0 && console.log(\"props\", feature.properties)\n\n feature.properties = flattenNestedObjects(feature.properties)\n feature.id = ++id // label every feature with a positive (truthy) integer for tracking hovers by id\n feature.code = h3Geocode(feature, H3_LEVEL)\n\n // Issue Density Map\n {\n let b311_issue_count = issue_density_map[feature.code] || MISSING\n\n // Total population in this census geometry\n // https://www.socialexplorer.com/data/ACS2007/metadata/?ds=ACS07&var=B01003001\n let total_population = feature.properties.census_b01003001\n let census_area = feature.properties.census_area\n let hex_area = feature.properties._area\n // note: this can be >1 if the census geometry is smaller than the hexagon.\n // we clip it to 1 as discussed March 20 2019.\n let proportion_of_census_geometry_in_hex = Math.min(\n 1,\n hex_area / census_area\n )\n // Population count estimate for the hex bin\n let hex_population =\n total_population * proportion_of_census_geometry_in_hex\n\n // Compute a smoothed issues-per-population\n // if total_population === 0 we can gray these out, or define them as zero\n feature.properties.issues_normalized_by_population =\n hex_population === 0 || b311_issue_count === MISSING\n ? MISSING\n : smooth(b311_issue_count, hex_population, 0, 50)\n\n feature.properties.b311_issue_count = b311_issue_count\n feature.properties.total_population = total_population\n feature.properties.census_area = census_area\n feature.properties.hex_area = hex_area\n feature.properties.proportion_of_census_geometry_in_hex = proportion_of_census_geometry_in_hex\n feature.properties.hex_population = hex_population\n }\n\n // Most Common Issues\n {\n CATEGORY_NAMES.forEach(c => {\n feature.properties[\"category_ratio_\" + c] = category_counts[c][\n feature.code\n ]\n ? category_counts[c][feature.code].ratio\n : MISSING // 1.0 // Treat missing as 1.\n })\n }\n\n // Timeliness\n {\n feature.properties.on_time_pc_smoothed =\n feature.code in time_data\n ? time_data[feature.code].on_time_pc_smoothed\n : MISSING\n feature.properties.pc_unclosed_smoothed =\n feature.code in unclosed_data\n ? unclosed_data[feature.code].pc_unclosed_smoothed\n : MISSING\n feature.properties.b311_unclosed_issue_count =\n feature.code in unclosed_data\n ? unclosed_data[feature.code].count\n : MISSING\n }\n\n // Scoring\n {\n const fp = feature.properties\n\n // https://drive.google.com/file/d/0B5xorwVOSRdXbGxHMHlabHlVM3c/view\n // average score of sidewalk quality; we invert (1-) so that this denotes the % of sidewalk that needs maintenance.\n fp.sidewalk_score = 1 - fp.sidewalks_area_score / fp.sidewalks_area / 100\n // number of overlapping walksheds; higher = more walkable\n fp.walkability_score = fp._count\n // social need score; higher = more social need\n fp.social_need_score =\n // 0.70 * % of population below poverty level\n 0.70 * (fp.census_b17020002 / fp.census_b17020001) +\n // 0.15 * % of 65-year old+ population\n 0.15 *\n ((fp.census_b01001020 +\n fp.census_b01001021 +\n fp.census_b01001022 +\n fp.census_b01001023 +\n fp.census_b01001024 +\n fp.census_b01001025 +\n fp.census_b01001044 +\n fp.census_b01001045 +\n fp.census_b01001046 +\n fp.census_b01001047 +\n fp.census_b01001048 +\n fp.census_b01001049) /\n fp.census_b01001001) +\n // 0.15 * % of households with children below age 6\n 0.15 *\n ((fp.census_b11004004 +\n fp.census_b11004011 +\n fp.census_b11004017) /\n fp.census_b11004001)\n }\n\n CODE_TO_FEATURE[feature.code] = feature\n})\n\n// Normalize all scores to [0, 1]\nlet max_sidewalk_score = d3.max(hexes.features, d => d.properties.sidewalk_score)\nlet max_walkability_score = d3.max(\n hexes.features,\n d => d.properties.walkability_score\n)\nlet max_social_need_score = d3.max(\n hexes.features,\n d => d.properties.social_need_score\n)\nhexes.features.forEach(feature => {\n let fp = feature.properties\n // Normalize scores to [0, 1]\n fp.sidewalk_score /= max_sidewalk_score\n fp.walkability_score /= max_walkability_score\n fp.social_need_score /= max_social_need_score\n\n // If any score is missing, make all scores missing\n if (\n Number.isNaN(fp.sidewalk_score) ||\n Number.isNaN(fp.walkability_score) ||\n Number.isNaN(fp.social_need_score)\n ) {\n fp.sidewalk_score = MISSING\n fp.walkability_score = MISSING\n fp.social_need_score = MISSING\n }\n})\n\nhexes.features = hexes.features.filter(\n d => !(\n d.properties.sidewalk_score === MISSING &&\n d.properties.walkability_score === MISSING &&\n d.properties.social_need_score === MISSING &&\n d.properties.b311_issue_count === MISSING &&\n d.properties.on_time_pc_smoothed === MISSING\n )\n)\n\nexport const mean_sidewalk_score = d3.mean(hexes.features, d => d.properties.sidewalk_score)\nexport const mean_walkability_score = d3.mean(hexes.features, d => d.properties.walkability_score)\nexport const mean_social_need_score = d3.mean(hexes.features, d => d.properties.social_need_score)\n\n","import mapboxgl from \"mapbox-gl\"\nimport mapboxToken from \"./mapbox-token.js\"\nimport React, {useState, useEffect, useRef} from \"react\"\nimport * as d3 from \"d3\"\nimport * as h3 from \"h3-js\"\nimport pin from \"./res/img/pin.png\"\nimport labels from \"./res/img/Labels.svg\"\nimport * as City_of_Boston_Boundary from \"./res/data/City_of_Boston_Boundary.json\"\nimport {h3Geocode, lngLat, H3_LEVEL, CODE_TO_FEATURE} from \"./data.js\"\n\nmapboxgl.accessToken = mapboxToken\n\nconst DEFAULT_COLOR = \"rgba(255,255,255,0.15)\"\nconst params = new URL(document.baseURI).searchParams\n\nconst labelsAreHere = [42.330158, -71.083664].reverse() // center of the figma layers image, Elizabeth's version, default fonts\n\nconst youAreHere =\n params.has(\"lng\") && params.has(\"lat\")\n ? [+params.get(\"lng\"), +params.get(\"lat\")]\n : [42.330158, -71.083664].reverse() \n\nconst youAreHereZoom = 15\n\nconst bostonCenter = [-71.083664, 42.330158]\nconst bostonZoom = 11.2\nconst mapClickZoom = 13\n\nconst markerImg = src => {\n let img = document.createElement(\"img\")\n img.src = src\n img.style.width = \"64px\"\n img.style.transform = \"translate(-50%, -100%)\"\n return img\n}\n\nconst labelImg = src => {\n let img = document.createElement(\"img\")\n img.className = \"label-img-marker\"\n img.src = src\n img.style.width = `${1156 / 2}px`\n img.style.transform = \"translate(-50%, -100%)\"\n return img\n}\n\n// Used to fill hexagons on the tradeoff screen\nconst mapboxFillComposition = (features, properties, composition, color) => {\n let nstops = 10\n let extent = d3.extent(color.domain())\n let scale = d3\n .scaleLinear()\n .domain([0, 1])\n .range(extent)\n\n let scores = features\n .map(\n d =>\n d.properties[properties[0]] * composition[0] +\n d.properties[properties[1]] * composition[1] +\n d.properties[properties[2]] * composition[2]\n )\n .filter(d => !Number.isNaN(d))\n .sort()\n\n let q = d3.quantile(scores, 0.97) // highlight the top percentile\n\n let [pc_1, pc_2, pc_3] = composition\n let expr = [\n \"case\",\n [\"==\", null, [\"get\", properties[0]]],\n DEFAULT_COLOR,\n\n [\n \"interpolate\",\n [\"linear\"],\n [\n \"+\",\n [\"*\", pc_1, [\"get\", properties[0]]],\n [\"*\", pc_2, [\"get\", properties[1]]],\n [\"*\", pc_3, [\"get\", properties[2]]]\n ],\n ...d3.range(nstops).flatMap(d => {\n let pc = d / (nstops - 1)\n let s = scale(pc)\n return s < q ? [s, color(scale(pc))] : []\n }),\n\n // highlight the top cells to show the distribution of where needs would be addressed\n q - 0.01,\n color(scale(q - 0.01)),\n q,\n \"#FCFF61\"\n ]\n ]\n return expr\n}\n\n// Regular data-based hexagon fill\nconst mapboxFill = (features, property, color) => {\n // Given a list of features, a property, and a color scale,\n // return a mapbox-compatible fill specification.\n let nstops = 10\n let extent = d3.extent(color.domain()) // d3.extent(features, d => d.properties[property])\n let scale = d3\n .scaleLinear()\n .domain([0, 1])\n .range(extent)\n\n return {\n property,\n stops: d3.range(nstops).map(d => {\n let pc = d / (nstops - 1)\n return [scale(pc), color(scale(pc))]\n }),\n default: DEFAULT_COLOR\n }\n}\n\nlet markerInstance;\nexport const Map = ({\n showNeighborhoods,\n hexes,\n property,\n color,\n opacity,\n fadeOpacity,\n stroke,\n showYouAreHere,\n onHover,\n onUnhover,\n composition,\n sectionIndex,\n clickZoomable\n}) => {\n let container = useRef(null)\n let [map, setMap] = useState(null)\n let [mapReady, setMapReady] = useState(false)\n\n let features = hexes.features\n\n const youAreHereMarker = new mapboxgl.Marker(markerImg(pin), {\n offset: {\n x: 0,\n y: -10\n }\n }).setLngLat(youAreHere)\n\n const labelMarker = new mapboxgl.Marker(labelImg(labels), {\n offset: {\n x: 0,\n y: -10\n }\n }).setLngLat(labelsAreHere)\n\n let topLayer = \"water-point-label\"\n\n // Set map state when the map is loaded\n useEffect(() => {\n let map = new mapboxgl.Map({\n container: container.current,\n style: \"mapbox://styles/johnnycrich/cjvwv51ii27h21cmue64bauc7\",\n center: bostonCenter,\n zoom: bostonZoom,\n interactive: false\n })\n\n map.on(\"load\", () => {\n // Move the fade layer up to the top. There doesn't\n // appear to be a way to do this from within Mapbox Studio\n map.moveLayer(\"fade\", topLayer)\n\n // Mapbox is bad at updating the local when the style has changed...\n // Move the neighborhood layer into oblivion.\n // map.setLayoutProperty(\"settlement-subdivision-label\", \"visibility\", \"none\")\n\n map.addSource(\"boston-boundary\", {\n type: \"geojson\",\n data: City_of_Boston_Boundary.default,\n maxzoom: Math.ceil(youAreHereZoom),\n buffer: 64 // default: 128\n })\n\n // Add an initial static hexbin GeoJSON for testing\n map.addSource(\"hexes\", {\n type: \"geojson\",\n data: hexes,\n maxzoom: Math.ceil(youAreHereZoom),\n buffer: 64 // default: 128\n })\n\n map.addSource(\"youAreHere\", {\n type: \"geojson\",\n data: {\n type: \"Point\",\n coordinates: youAreHere\n }\n })\n\n let hexBefore = topLayer\n\n map.addLayer(\n {\n id: \"boston-boundary-stroke\",\n type: \"line\",\n source: \"boston-boundary\",\n paint: {\n \"line-color\": \"#A6B3BC\",\n \"line-width\": 0.75,\n \"line-opacity\": 0.75\n }\n },\n hexBefore\n )\n\n map.addLayer(\n {\n id: \"boston-boundary-fill\",\n type: \"fill\",\n source: \"boston-boundary\",\n paint: {\n \"fill-color\": \"#A6B3BC\",\n \"fill-opacity\": 0.15\n }\n },\n hexBefore\n )\n\n map.addLayer(\n {\n id: \"hex-fills\",\n type: \"fill\",\n source: \"hexes\",\n transition: {\n duration: 500, // match css fade transitions\n delay: 0\n },\n paint: {\n \"fill-opacity\": 0\n }\n },\n hexBefore\n )\n\n map.addLayer(\n {\n id: \"hex-strokes\",\n type: \"line\",\n source: \"hexes\",\n transition: {\n duration: 500, // match css fade transitions\n delay: 0\n },\n paint: {\n \"line-color\": \"#A6B3BC\",\n // some hex outlines don't overlap, leading to visible artifacts.\n // set the color to off-white rather than using white + opacity.\n \"line-opacity\": 0,\n \"line-width\": 0.75\n // \"line-width\": 1.5,\n }\n },\n hexBefore\n )\n\n map.addLayer(\n {\n id: \"blip\",\n source: \"youAreHere\",\n type: \"circle\",\n paint: {\n \"circle-radius\": 0,\n \"circle-radius-transition\": {\n duration: 0\n },\n \"circle-opacity-transition\": {\n duration: 0\n },\n \"circle-color\": \"#4C85AA\"\n }\n },\n hexBefore\n )\n\n map.addLayer(\n {\n id: \"hex-hovers\",\n type: \"fill\",\n source: \"hexes\",\n transition: {\n duration: 500, // match css fade transitions\n delay: 0\n },\n\n paint: {\n \"fill-color\": \"#000\",\n \"fill-opacity\": [\n \"case\",\n [\"boolean\", [\"feature-state\", \"hover\"], false],\n 0.35,\n 0\n ]\n }\n },\n hexBefore\n )\n\n if(showYouAreHere) \n markerInstance = youAreHereMarker.addTo(map)\n\n labelMarker.addTo(map)\n })\n\n let hoveredHexCodes = []\n\n // When the user moves their mouse over the hex-hovers layer, we'll update the\n // feature state for the feature under the mouse.\n map.on(\"mousemove\", \"hex-hovers\", e => {\n if (e.features.length > 0) {\n // Trigger outside events based on mouse interactions.\n // Note: This may trigger unhover-hover in sequence for some hexagons\n\n onUnhover(hoveredHexCodes.map(code => CODE_TO_FEATURE[code]))\n\n hoveredHexCodes.forEach(code =>\n map.setFeatureState(\n {source: \"hexes\", id: CODE_TO_FEATURE[code].id},\n {hover: false}\n )\n )\n\n let code = h3Geocode(e.features[0], H3_LEVEL)\n hoveredHexCodes = h3\n .kRing(code, H3_LEVEL > 9 ? 2 : 1)\n .filter(code => code in CODE_TO_FEATURE)\n\n hoveredHexCodes.forEach(code => {\n map.setFeatureState(\n {source: \"hexes\", id: CODE_TO_FEATURE[code].id},\n {hover: true}\n )\n })\n\n onHover(hoveredHexCodes.map(code => CODE_TO_FEATURE[code]))\n }\n })\n\n // When the mouse leaves the hex-fill layer, update the feature state of the\n // previously hovered feature.\n map.on(\"mouseleave\", \"hex-hovers\", () => {\n onUnhover(hoveredHexCodes.map(code => CODE_TO_FEATURE[code]))\n\n hoveredHexCodes.forEach(code =>\n map.setFeatureState(\n {source: \"hexes\", id: CODE_TO_FEATURE[code].id},\n {hover: false}\n )\n )\n hoveredHexCodes.length = 0\n })\n\n setMapReady(false)\n setMap(map)\n\n // this is questionable but the best way I've discovered thus far\n // to reliably check for the style being loaded and the map ready for use.\n map.on(\"idle\", e => {\n setMapReady(map.isStyleLoaded())\n })\n\n return () => {\n map.remove()\n }\n }, [container])\n\n useEffect(() => {\n let animating = true\n\n let flip = true\n let fn = e => {\n clickZoomable &&\n map.flyTo({\n center: flip ? lngLat(e.features[0]).reverse() : bostonCenter,\n zoom: flip ? mapClickZoom : bostonZoom,\n bearing: 0,\n speed: 0.75\n })\n flip = !flip\n }\n\n if (mapReady) {\n let target, targetZoom\n\n // Make this the default with || true; that way you can skip around sections with no problem.\n if (\n sectionIndex === null ||\n sectionIndex === 2 ||\n sectionIndex === 5 ||\n true\n ) {\n target = bostonCenter\n targetZoom = bostonZoom\n }\n\n if (sectionIndex === 0 || sectionIndex === 1) {\n target = youAreHere\n targetZoom = youAreHereZoom\n }\n \n // this is not caching as a Marker instance for some reason, so use dom accessor which works fine\n // remove pin after first step\n // if (sectionIndex > 0)\n markerInstance['_element'].style.display = (sectionIndex > 0 && !showYouAreHere) ? 'none' : 'block'\n // else if(showYouAreHere === true)\n // markerInstance['_element'].style.display = 'block' \n\n console.log(showYouAreHere)\n \n if (target && targetZoom) {\n map.flyTo({\n // These options control the ending camera position: centered at\n // the target, at zoom level 9, and north up.\n center: target,\n zoom: targetZoom,\n bearing: 0,\n offset: [300, -100],\n // These options control the flight curve, making it move\n // slowly and zoom out almost completely before starting\n // to pan.\n speed: 0.75 // 0.4 // make the flying slow\n // curve: 1, // change the speed at which it zooms out\n })\n }\n\n if (composition) {\n let properties = [\n \"sidewalk_score\",\n \"walkability_score\",\n \"social_need_score\"\n ]\n map.setPaintProperty(\n \"hex-fills\",\n \"fill-color\",\n mapboxFillComposition(features, properties, composition, color)\n )\n } else {\n map.setPaintProperty(\n \"hex-fills\",\n \"fill-color\",\n mapboxFill(features, property, color)\n )\n }\n\n map.setPaintProperty(\"fade\", \"background-opacity\", fadeOpacity)\n map.setPaintProperty(\n \"hex-fills\",\n \"fill-opacity\",\n Math.max(0.01, opacity)\n )\n map.setPaintProperty(\"hex-strokes\", \"line-opacity\", stroke ? 1 : 0)\n map.setLayoutProperty(\n \"hex-hovers\",\n \"visibility\",\n opacity > 0 ? \"visible\" : \"none\"\n )\n\n map.on(\"click\", \"hex-fills\", fn)\n\n let blipStartTime = performance.now()\n let frame = timestamp => {\n let s = 2 * ((timestamp - blipStartTime) / 1000) + Math.PI / 2\n // console.log(t - blipTime)\n let radius = 10 + 5 * Math.sin(s)\n let opacity = Math.max(0, Math.cos(s))\n // console.log('radius', radius, 'opacity', opacity)\n map.setPaintProperty(\"blip\", \"circle-radius\", radius)\n map.setPaintProperty(\"blip\", \"circle-opacity\", opacity)\n animating && requestAnimationFrame(frame)\n }\n\n requestAnimationFrame(frame)\n }\n\n return () => {\n animating = false\n map && map.off(\"click\", \"hex-fills\", fn)\n }\n }, [\n showNeighborhoods,\n features,\n property,\n color,\n fadeOpacity,\n opacity,\n stroke,\n showYouAreHere,\n mapReady,\n composition,\n sectionIndex,\n clickZoomable\n ])\n\n return (\n
\n First, let’s orient ourselves by looking at this map of Boston.\n
\n\n Boston’s 311 data includes over 200,000 reports in just the last two years. \n
\n\n To make patterns in that data easier to see, we have grouped those reports into the hexagons you see on the maps in this tool.\n
\n\n\n The map is colored based on the number of 311 reports per 100 people living in each hexagon. Mouse over the map to see the data for groups of hexagons.\n
\n\n Right now, the map is showing reports per person. See population density instead?\n
\n\n Right now, the map is\n {showingIssues\n ? [\" showing reports per person. \", See population density instead?]\n : [\" showing population density. \", See reports per person instead?]}\n
\n\n This map colors the hexagons based on whether a category is reported more or less than average. Green means higher than average reporting, and purple means lower than average. Click the categories below to see which places report different categories.\n
{\" \"}\n {CATEGORY_NAMES.map(c => (\n\n Reports are routed to relevant city departments. But, reports can be quite different. Some (shoveling snow) are time-sensitive and relatively low-effort, while others (tree removal) need to be scheduled in advance. And, for reports on private or federal property, the City of Boston cannot respond.\n
\n\n This map shows how often reports of parking, trash pickup, and abandoned vehicles are addressed on-time.\n
\n\n Does this 311 data match your own experience of Boston’s places?\n
\n\n How do you think the maps might be different if all Bostonians reported their problems? \n
\n\n How do you imagine 311 data could help us make better decisions as a city?\n
\nBoston 311 lets people report things to the city. What does that 311 data say about your neighborhood?
\n\n\n First, let’s orient ourselves by looking at this map of Boston.\n
\n\n We’ll use three data sets to decide where to fix sidewalks. \n
\n\n That is a lot of data. To make patterns in that data easier to see, we have included the data from all three data sets, grouped into the hexagons you see on the maps in this tool.\n
\n\n This map shows where sidewalks in Boston need repairs.\n
\n\n\n The darker the hexagon, the worse its sidewalks are.\n
\n\n This map shows shops, hospitals, schools, transit stops, and other destinations that make a place accessible and walkable. \n
\n\n The darker the hexagon, the more destinations it has, and the more its sidewalks are used. \n
\n\n This map shows where households are in poverty, and where children and older populations live. These groups need sidewalks because driving and public transit might be unaffordable or inaccessible for them. \n
\n\n How would you determine social need? \n
\n\n The darker the hexagon, the larger the population of people needing sidewalks. \n
\n\n How might we combine sidewalk, walkability, and social need scores to decide which sidewalks to repair first? Drag the white circle to change the importance of each data set, and watch the map update priority hexagons in yellow\n
\n\n {composition && (\n\n
\n New technologies from sensors to social media are producing more and more data about our cities, neighborhoods, and streets.\n
\n\n\n When cities make decisions about changing the public realm, they use a variety of data to consider different factors. \n
\n\n\n If you had to choose where to improve or replace Boston’s sidewalks, how would you do it?\n
\n\n