我在地图上应用 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()?非常感谢任何和所有的帮助!