D3 の behavior.drag() をマップに適用する際に問題が発生しています。この例では、マップをドラッグするとパンが非常に速くなり、クリックしたポイントがマウスにとどまりません - http://bl.ocks.org/jczaplew/6453048
私のドラッグ動作コードは次のようになります -
var drag = d3.behavior.drag()
.origin(function() { return {x: rotate[0], y: -rotate[1]}; })
.on("drag", function() {
rotate[0] = d3.event.x;
rotate[1] = -d3.event.y;
// Refresh the map
projection.rotate(rotate);
path = d3.geo.path().projection(projection);
d3.selectAll("path").attr("d", path);
});
必要なもの:
- SVG 全体を翻訳せずにパンします。マップからパンする機能 (この質問で表明された懸念 - d3.jsを使用して太平洋を中心としたメルカトル図のズームとパンニングを行い、この例で実証 - http://bl.ocks.org/d3noob/4966228 ) は、望ましくない。
- ユーザーがマップをクリックしてドラッグすると、クリックしたポイントがカーソルに固定されます (つまり、スペインをクリックしてドラッグすると、マップがスペインを中心に回転します)。
この問題は drag.origin() と関係があると思われますが、おそらく d3.behavior.drag() をまったく使用すべきではありませんか? どんな支援も大歓迎です!