d3.js のメルカトル関数を使用して、svg-Element にマップを実装しました。マップは特定の都市のみを表しています。都市マップの外側のすべては、私のプロジェクトには関係ありません。
今度は、このマップに zoom() や drag() などの関数を実装したいと思います。
しかし、メルカトル マップで drag() 関数を処理するための解決策が見つかりません。変換の領域を制限することはできません。(ユーザーは、都市の地図の外に地図をドラッグできないようにする必要があります)
通常の svg 要素の場合、これは機能します。
var drag = d3.behavior.drag()
.on("drag", dragmove);
function dragmove(d) {
var x = Math.max(0, Math.min('width-of-svg-element', d3.event.x));
var y = Math.max(0, Math.min('height-of-svg-element', d3.event.y));
d3.select(this)
.attr("transform", "translate(" + x + "," + y + ")");
}
しかし、私のメルカトル図ではうまくいきません。
私を助けてください :(
前もって感謝します!
ここに小さな例があります: https://jsfiddle.net/c55w7u9e/
私の意図は、ユーザーが svg 要素の外側に赤い円 (この例では、しかし私のプロジェクトではマップ) をドラッグする可能性があってはならないということです...