Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x | import {
geoPath,
geoConicConformal,
geoAzimuthalEqualArea,
GeoPath,
} from "d3-geo"
import { geoRobinson, geoPatterson } from "d3-geo-projection"
// https://github.com/d3/d3-geo-projection/issues/202
// todo: would be nice to get propert types for this and not have to run different code during testing
const projectionToUseDuringJestTesting = geoConicConformal()
export enum MapProjectionName {
World = "World",
Africa = "Africa",
NorthAmerica = "NorthAmerica",
SouthAmerica = "SouthAmerica",
Asia = "Asia",
Europe = "Europe",
Oceania = "Oceania",
}
export const MapProjectionLabels: Record<MapProjectionName, string> = {
World: "World",
Africa: "Africa",
NorthAmerica: "North America",
SouthAmerica: "South America",
Asia: "Asia",
Europe: "Europe",
Oceania: "Oceania",
}
export const MapProjectionGeos: { [key in MapProjectionName]: GeoPath } = {
World: geoPath().projection(
typeof geoRobinson === "undefined"
? projectionToUseDuringJestTesting
: geoRobinson()
),
Africa: geoPath().projection(
geoConicConformal().rotate([-25, 0]).center([0, 0]).parallels([30, -20])
),
NorthAmerica: geoPath().projection(
geoConicConformal()
.rotate([98, 0])
.center([0, 38])
.parallels([29.5, 45.5])
),
SouthAmerica: geoPath().projection(
geoConicConformal()
.rotate([68, 0])
.center([0, -14])
.parallels([10, -30])
),
// From http://bl.ocks.org/dhoboy/ff8448ace9d5d567390a
Asia: geoPath().projection(
(typeof geoPatterson === "undefined"
? projectionToUseDuringJestTesting
: geoPatterson()
)
.center([58, 54])
.scale(150)
.translate([0, 0])
.precision(0.1)
),
// From http://bl.ocks.org/espinielli/10587361
Europe: geoPath().projection(
geoAzimuthalEqualArea()
.scale(200)
.translate([262, 1187])
.clipAngle(180 - 1e-3)
.precision(1)
),
Oceania: geoPath().projection(
geoConicConformal()
.rotate([-135, 0])
.center([0, -20])
.parallels([-10, -30])
),
} as const
|