Skip to content

Commit b5c3c3b

Browse files
committed
Support for generating a standalone svg file
1 parent a0c4fce commit b5c3c3b

File tree

6 files changed

+95
-43
lines changed

6 files changed

+95
-43
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@
22
build/
33
node_modules
44
npm-debug.log
5+
cambridge-pub-map.svg

example/index.html

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,16 @@
1313
<script>
1414
var container = d3.select('#tube-map');
1515
var width = 1600;
16-
var height = 1024;
16+
var height = 1000;
1717

1818
var map = d3.tubeMap()
1919
.width(width)
2020
.height(height)
2121
.margin({
22-
top: height / 50,
23-
right: width / 7,
24-
bottom: height / 10,
25-
left: width / 7,
22+
top: 20,
23+
right: 20,
24+
bottom: 40,
25+
left: 100,
2626
})
2727
.on("click", function (name) {
2828
console.log(name);
@@ -31,6 +31,24 @@
3131
d3.json("./pubs.json", function (error, data) {
3232
container
3333
.datum(data).call(map);
34+
35+
var svg = container.select('svg');
36+
37+
zoom = d3
38+
.zoom()
39+
.scaleExtent([0.5, 6])
40+
.on('zoom', zoomed);
41+
42+
var zoomContainer = svg.call(zoom);
43+
var initialScale = 2;
44+
var initialTranslate = [100, 200];
45+
46+
zoom.scaleTo(zoomContainer, initialScale);
47+
zoom.translateTo(zoomContainer, initialTranslate[0], initialTranslate[1]);
48+
49+
function zoomed() {
50+
svg.select('g').attr('transform', d3.event.transform.toString());
51+
}
3452
});
3553
</script>
3654
</body>

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "d3-tube-map",
3-
"version": "0.3.4",
3+
"version": "0.4.0",
44
"description": "Draw tube maps in the style of the London Underground",
55
"keywords": ["d3", "d3-module", "tube", "map"],
66
"homepage": "http://www.pubmap.co.uk/",

src/map.js

Lines changed: 3 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -66,41 +66,16 @@ export default function() {
6666
maxYRange = height - margin.top - margin.bottom;
6767
}
6868

69-
xScale.domain([minX, maxX]).range([0, maxXRange]);
70-
yScale.domain([minY, maxY]).range([maxYRange, 0]);
69+
xScale.domain([minX, maxX]).range([margin.left, margin.left + maxXRange]);
70+
yScale.domain([minY, maxY]).range([margin.top + maxYRange, margin.top]);
7171
lineWidth = lineWidthMultiplier * (xScale(1) - xScale(0));
7272

7373
svg = selection
7474
.append('svg')
7575
.style('width', '100%')
7676
.style('height', '100%');
7777

78-
var g = svg.append('g');
79-
80-
// Fill with white rectangle to capture zoom events
81-
g
82-
.append('rect')
83-
.attr('width', '100%')
84-
.attr('height', '100%')
85-
.attr('fill', 'white');
86-
87-
zoom = d3
88-
.zoom()
89-
.scaleExtent([0.5, 6])
90-
.on('zoom', zoomed);
91-
92-
var zoomContainer = g.call(zoom);
93-
gMap = zoomContainer.append('g');
94-
95-
var initialScale = 2;
96-
var initialTranslate = [100, 200];
97-
98-
zoom.scaleTo(zoomContainer, initialScale);
99-
zoom.translateTo(zoomContainer, initialTranslate[0], initialTranslate[1]);
100-
101-
function zoomed() {
102-
gMap.attr('transform', d3.event.transform.toString());
103-
}
78+
gMap = svg.append('g');
10479

10580
if (_data.river !== undefined) {
10681
drawRiver();

test/map.html

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,13 @@
22
<div>
33
<svg style="width: 100%; height: 100%;">
44
<g>
5-
<rect width="100%" height="100%" fill="white"></rect>
6-
<g transform="translate(-200,-400) scale(2)">
7-
<g class="lines">
8-
<path d="M-26.666666666666668,300L200,300C300,300,300,300,400,200L618.8561808316413,-18.856180831641268" id="Town"
9-
stroke="#ffd300" fill="none" stroke-width="80" class="line"></path>
10-
</g>
11-
<g class="interchanges"></g>
12-
<g class="stations"></g>
13-
<g class="labels"></g>
5+
<g class="lines">
6+
<path d="M53.33333333333333,380L280,380C380,380,380,380,480,280L698.8561808316413,61.14381916835873" id="Town" stroke="#ffd300"
7+
fill="none" stroke-width="80" class="line"></path>
148
</g>
9+
<g class="interchanges"></g>
10+
<g class="stations"></g>
11+
<g class="labels"></g>
1512
</g>
1613
</svg>
1714
</div>

util/create-svg.js

Lines changed: 61 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)