|
<html xmlns="http://www.w3.org/1999/xhtml"> |
|
<head> |
|
<title>d3.carto.map - custom infobox formatters</title> |
|
<meta charset="utf-8" /> |
|
<link type="text/css" rel="stylesheet" href="d3map.css" /> |
|
<link type="text/css" rel="stylesheet" href="https://raw.githubusercontent.com/emeeks/d3-carto-map/master/examples/example.css" /> |
|
</head> |
|
<style> |
|
html,body { |
|
height: 100%; |
|
width: 100%; |
|
margin: 0; |
|
} |
|
|
|
#map { |
|
height: 100%; |
|
width: 100%; |
|
position: absolute; |
|
} |
|
|
|
.countryInfobox { |
|
color: pink; |
|
font-style: italic; |
|
padding: 20px; |
|
} |
|
rect.bluesquare { |
|
fill: #4682B4; |
|
stroke: black; |
|
stroke-width: 1px; |
|
} |
|
.countryborders { |
|
fill: rgba(0,0,0,0); |
|
stroke-width: 1px; |
|
stroke: gray; |
|
cursor: pointer; |
|
} |
|
|
|
.roads { |
|
stroke: brown; |
|
stroke-width: 1px; |
|
fill: none; |
|
} |
|
|
|
.halffilledcountries { |
|
fill: rgba(224,224,209,0.5); |
|
stroke-width: 1px; |
|
stroke: black; |
|
opacity: 1; |
|
} |
|
|
|
</style> |
|
<script> |
|
|
|
function makeSomeMaps() { |
|
map = d3.carto.map(); |
|
|
|
d3.select("#map").call(map); |
|
|
|
tileLayer = d3.carto.layer.tile(); |
|
tileLayer |
|
.path("examples.map-zgrqqx0w") |
|
.label("Base") |
|
.on("load", recenter); |
|
|
|
geojsonLayer = d3.carto.layer.geojson(); |
|
geojsonLayer |
|
.path("http://bl.ocks.org/emeeks/raw/c970c9ee3e242e90004b/world.geojson") |
|
.label("GeoBorders") |
|
.cssClass("countryborders") |
|
.renderMode("canvas") |
|
.on("load", createFeatureLayer); |
|
|
|
topojsonLayer = d3.carto.layer.topojson(); |
|
topojsonLayer |
|
.path("http://bl.ocks.org/emeeks/raw/c970c9ee3e242e90004b/sample_routes.topojson") |
|
.label("TopoRoutes") |
|
.cssClass("roads") |
|
.renderMode("svg") |
|
.clickableFeatures(true); |
|
|
|
csvModal = d3.carto.modal(); |
|
csvModal.formatter( |
|
function(d) {return "<h1>" + d.label + " in modern day " + d.modern + "</h1>"} |
|
) |
|
|
|
csvLayer = d3.carto.layer.csv(); |
|
csvLayer |
|
.type("csv") |
|
.path("http://bl.ocks.org/emeeks/raw/c970c9ee3e242e90004b/sample_points.csv") |
|
.label("CSV Points") |
|
.cssClass("pinkcircle") |
|
.renderMode("svg") |
|
.markerSize(8) |
|
.x("x") |
|
.y("y") |
|
.modal(csvModal) |
|
.clickableFeatures(true); |
|
|
|
map.addCartoLayer(tileLayer); |
|
map.addCartoLayer(topojsonLayer); |
|
map.addCartoLayer(geojsonLayer); |
|
map.addCartoLayer(csvLayer); |
|
|
|
function recenter() { |
|
map.centerOn([3,43],"latlong"); |
|
} |
|
|
|
function createFeatureLayer() { |
|
var featuresArray = []; |
|
var mapLayers = map.layers(); |
|
mapLayers.forEach(function (layer) { |
|
if (layer.label() == "GeoBorders") { |
|
featuresArray = layer.features(); |
|
} |
|
}) |
|
shortNameCountries = featuresArray.filter(function(d) {return d.properties.name.length < 7}) |
|
|
|
featureModal = d3.carto.modal(); |
|
featureModal.formatter( |
|
function(d) {return "<span class='countryInfobox'>The country of " + d.properties.name + " has a short name</span>"} |
|
) |
|
|
|
featureLayer = d3.carto.layer.featureArray(); |
|
featureLayer |
|
.features(shortNameCountries) |
|
.label("Feature Array") |
|
.cssClass("halffilledcountries") |
|
.renderMode("svg") |
|
.clickableFeatures(true) |
|
.modal(featureModal); |
|
|
|
map.addCartoLayer(featureLayer); |
|
|
|
} |
|
|
|
} |
|
</script> |
|
<body onload="makeSomeMaps()"> |
|
<div id="map"></div> |
|
<footer> |
|
<script src="http://d3js.org/d3.v3.min.js" charset="utf-8" type="text/javascript"></script> |
|
<script src="http://d3js.org/topojson.v1.min.js" type="text/javascript"> |
|
</script> |
|
<script src="http://d3js.org/d3.geo.projection.v0.min.js" type="text/javascript"> |
|
</script> |
|
<script src="http://d3js.org/colorbrewer.v1.min.js"></script> |
|
<script src="http://bl.ocks.org/emeeks/raw/f3105fda25ff785dc5ed/tile.js" type="text/javascript"> |
|
</script> |
|
<script src="http://bl.ocks.org/emeeks/raw/f3105fda25ff785dc5ed/d3.quadtiles.js" type="text/javascript"> |
|
</script> |
|
<script src="http://bl.ocks.org/emeeks/raw/f3105fda25ff785dc5ed/d3.geo.raster.js" type="text/javascript"> |
|
</script> |
|
<script src="https://rawgit.com/emeeks/d3-carto-map/master/d3.carto.map.js" type="text/javascript"> |
|
</script> |
|
</footer> |
|
</body> |
|
</html> |