https://wizardace.com/d3-zoom/
こちらのページを参考にして、htmlに記述したSVGで作成した図を、
モバイル端末のピンチ操作でズーム/パンしたいと思っているのですが、うまくいきません。
js
1 var width = 800; 2 var height = 600; 3 4 var svg = d3.select("svg_box"); 5 6 var dataset = []; 7 for(var i = 0; i < 300; i++) { 8 var r = 0.5 * d3.min([height, width]) * Math.random(); 9 var t = 2 * Math.PI * Math.random(); 10 dataset.push({ 11 "x": width / 2 + r * Math.cos(t), 12 "y": height / 2 + r * Math.sin(t) 13 }); 14 } 15 16 // 軸の設定 17 var x = d3.scaleLinear().domain([0, width]).range([0, width]); 18 var y = d3.scaleLinear().domain([0, height]).range([0, height]); 19 20 var xAxis = d3.axisBottom(x) 21 .ticks(width / height * 10) // 22 .tickSize(height) 23 .tickPadding(8 - height); 24 25 var yAxis = d3.axisRight(y) 26 .ticks(10) 27 .tickSize(width) 28 .tickPadding(8 - width); 29 30 var gX = svg.append("g").call(xAxis); 31 var gY = svg.append("g").call(yAxis); 32 33 var zoom = d3.zoom() 34 .scaleExtent([1, 40]) 35 .translateExtent([ 36 [-100, -100], 37 [width + 90, height + 100] 38 ]) 39 .on("zoom", zoomed); 40 41 svg.call(zoom); 42 43 function zoomed() { 44 gX.call(xAxis.scale(d3.event.transform.rescaleX(x))); 45 gY.call(yAxis.scale(d3.event.transform.rescaleY(y))); 46 }
html
1<div id="svg_box"> 2<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 800 600" id="svg_item"> 3SVGの記述(省略) 4</svg> 5</div>
D3.js以外にも方法があればご教示いただけますと幸いです。
お知恵をお借りしたく思います。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。