Я работаю над картой интерактивного макета, используя svg, d3.js и jquery-svgpan.js.
Это пример того, как это будет выглядеть: http://maps -charlotte.com / img / 1200 / panthers-stadium-map.jpg
Что янеобходимо: когда пользователь нажимает на любой из отдельных разделов, весь макет увеличивается, а раздел, на котором щелкнул пользователь, должен быть центрирован на экране.
Этот пример наиболее близок к тому, чего я хочу достичь: https://bl.ocks.org/mbostock/2206590
Дело в том, что я добавляю свой встроенный код svg, в то время как в примере используется файл JSON, поэтому я не могу понять, какой код javascript соотносится с картой / json, а какой сфункция масштабирования / центрирования.(Также я новичок в D3)
Это код, который у меня есть до сих пор - он масштабирует и панорамирует, но не имеет щелчка, чтобы увеличить / центрировать функциональность.Как мне лучше всего этого добиться?
Я ценю вашу помощь.
<!DOCTYPE HTML>
<html>
<head>
<!-- jQuery -->
<script type="text/javascript" src="js/jquery.js"></script>
<!-- pan/zoom -->
<script type="text/javascript" src="js/d3.v2.js"></script>
<script type="text/javascript" src="js/jquery-svgpan.js"></script>
</head>
<body>
<style>
svg {
cursor: pointer;
}
</style>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100vh" xmlns="http://www.w3.org/2000/svg"
xlink="http://www.w3.org/1999/xlink">
<g id="viewport">
<g>
<rect x="248" y="53" width="28" height="141" class="cls-1" id="B2" />
<rect x="276" y="53" width="28" height="141" class="cls-1" id="B3" />
<rect x="304" y="53" width="28" height="141" class="cls-1" id="B4" />
<rect x="332" y="53" width="28" height="141" class="cls-1" id="B5" />
<rect x="360" y="53" width="28" height="141" class="cls-1" id="B6" />
<rect x="388" y="53" width="28" height="141" class="cls-1" id="B7" />
<rect x="416" y="53" width="28" height="141" class="cls-1" id="B8" />
<rect x="444" y="53" width="28" height="141" class="cls-1" id="B9" />
<rect x="472" y="53" width="28" height="141" class="cls-1" id="B10" />
<rect x="500" y="53" width="28" height="141" class="cls-1" id="B11" />
<rect x="528" y="53" width="28" height="141" class="cls-1" id="B12" />
<rect x="556" y="53" width="28" height="141" class="cls-1" id="B13" />
<rect x="584" y="53" width="28" height="141" class="cls-1" id="B14" />
<rect x="612" y="53" width="28" height="141" class="cls-1" id="B15" />
<rect x="640" y="53" width="28" height="141" class="cls-1" id="B16" />
<rect x="668" y="53" width="28" height="141" class="cls-1" id="B17" />
<rect x="696" y="53" width="28" height="141" class="cls-1" id="B18" />
<rect x="724" y="53" width="28" height="141" class="cls-1" id="B19" />
</g>
<g>
<rect x="794" y="233" width="141" height="28" class="cls-1" id="B21" />
<rect x="794" y="261" width="141" height="28" class="cls-1" id="B22" />
<rect x="794" y="289" width="141" height="28" class="cls-1" id="B23" />
<rect x="794" y="317" width="141" height="28" class="cls-1" id="B24" />
<rect x="794" y="345" width="141" height="28" class="cls-1" id="B25" />
<rect x="794" y="373" width="141" height="28" class="cls-1" id="B26" />
<rect x="794" y="401" width="141" height="28" class="cls-1" id="B27" />
<rect x="794" y="429" width="141" height="28" class="cls-1" id="B28" />
<rect x="794" y="457" width="141" height="28" class="cls-1" id="B29" />
<rect x="794" y="485" width="141" height="28" class="cls-1" id="B30" />
<rect x="794" y="513" width="141" height="28" class="cls-1" id="B31" />
<rect x="794" y="541" width="141" height="28" class="cls-1" id="B32" />
</g>
<g>
<!--reverse-->
<rect x="248" y="607" width="28" height="141" class="cls-1" id="B51" />
<rect x="276" y="607" width="28" height="141" class="cls-1" id="B50" />
<rect x="304" y="607" width="28" height="141" class="cls-1" id="B49" />
<rect x="332" y="607" width="28" height="141" class="cls-1" id="B48" />
<rect x="360" y="607" width="28" height="141" class="cls-1" id="B47" />
<rect x="388" y="607" width="28" height="141" class="cls-1" id="B46" />
<rect x="416" y="607" width="28" height="141" class="cls-1" id="B45" />
<rect x="444" y="607" width="28" height="141" class="cls-1" id="B44" />
<rect x="472" y="607" width="28" height="141" class="cls-1" id="B43" />
<rect x="500" y="607" width="28" height="141" class="cls-1" id="B42" />
<rect x="528" y="607" width="28" height="141" class="cls-1" id="B41" />
<rect x="556" y="607" width="28" height="141" class="cls-1" id="B40" />
<rect x="584" y="607" width="28" height="141" class="cls-1" id="B39" />
<rect x="612" y="607" width="28" height="141" class="cls-1" id="B38" />
<rect x="640" y="607" width="28" height="141" class="cls-1" id="B37" />
<rect x="668" y="607" width="28" height="141" class="cls-1" id="B36" />
<rect x="696" y="607" width="28" height="141" class="cls-1" id="B35" />
<rect x="724" y="607" width="28" height="141" class="cls-1" id="B34" />
</g>
<g>
<!--reverse-->
<rect x="65" y="233" width="141" height="28" class="cls-1" id="B64" />
<rect x="65" y="261" width="141" height="28" class="cls-1" id="B65" />
<rect x="65" y="289" width="141" height="28" class="cls-1" id="B66" />
<rect x="65" y="317" width="141" height="28" class="cls-1" id="B67" />
<rect x="65" y="345" width="141" height="28" class="cls-1" id="B68" />
<rect x="65" y="373" width="141" height="28" class="cls-1" id="B69" />
<rect x="65" y="401" width="141" height="28" class="cls-1" id="B70" />
<rect x="65" y="429" width="141" height="28" class="cls-1" id="B71" />
<rect x="65" y="457" width="141" height="28" class="cls-1" id="B72" />
<rect x="65" y="485" width="141" height="28" class="cls-1" id="B73" />
<rect x="65" y="513" width="141" height="28" class="cls-1" id="B74" />
<rect x="65" y="541" width="141" height="28" class="cls-1" id="B75" />
</g>
</g>
</svg>
<script type="text/javascript">
$(document).ready(function () {
var w = 960,
h = 500;
var svg = d3.select("#chart")
.append("svg")
.attr("width", w)
.attr("height", h)
.attr("class", "PiYG")
.on("mousemove", update);
// This was added to the example
var g = svg.append('g')
.attr('id', 'viewport');
function update() {}
$('svg').svgPan('viewport');
});
var zoom = d3.behavior.zoom()
</script>
</body>
</html>