我使用D3库来创建绘图应用程序。

我需要在用户单击的坐标上绘制对象(为了简单起见)。问题是当用户使用平移&缩放和移动视口。
然后对象是错误的位置的地方(我想问题是事件坐标是相对于svg元素而不是g,所以他们是计算没有适当的转换)。

< pre> $('svg')。on('click',function(event){
d3.select('#content-layer')。append )
.attr('r',10)
.attr('cx',event.offsetX)
.attr('cy',event.offsetY)
.attr ('stroke','black')
.attr('fill','white');
});

var zoomBehavior = d3.behavior.zoom()
.scaleExtent([1,10])
.on('zoom',()=> {
var translate =translate(+ d3.event.translate +);
var scale =scale(+ d3.event.scale +);
d3.select '#content-layer')。attr(transform,translate + scale);
});

d3.select('svg')。call(zoomBehavior);

我试图添加点击回调到g元素,但它不工作

这里是jsfiddle:
https://jsfiddle.net/klinki/53ftaw7r/

解决方案

基本上你需要

所以我创建了一个变量:

  var translateVar = [0,0];   

当您平移更新此变量时:

  translateVar [0] = d3.event.translate [0]; 
translateVar [1] = d3.event.translate [1];

并将其添加到圈子的坐标:

  .attr('cx',mouseCoords [0]  -  translateVar [0])
.attr('cy',mouseCoords [1] - translateVar [1] )

更新小提琴:https://jsfiddle.net/thatoneguy/53ftaw7r/2/

您还需要照顾缩放因此做类似的事情:

  var scaleVar = 1;   

在缩放时更新变量:

  scaleVar = d3.event.scale   

新坐标:

  .attr('cx',(mouseCoords [0]  -  translateVar [0])/ scaleVar)
.attr cy',(mouseCoords [1] - translateVar [1])/ scaleVar)

a href =https://jsfiddle.net/thatoneguy/53ftaw7r/5/ =nofollow> https://jsfiddle.net/thatoneguy/53ftaw7r/5/

D3平移和缩放后的点击坐标(D3 click coordinates after pan and zoom)的更多相关文章

  1. d3限制范围缩放和平移升级到版本4

    感谢您提供帮助以更新下面的代码以在版本4中工作.我已将zoom.behaviour更改为d3.zoom,但我不清楚所需的其他更改.看起来比v3还要复杂! <!DOCTYPE html> & ...

  2. 【C#/WPF】Image图片的Transform变换:平移、缩放、旋转

    WPF中图像控件Image的变换属性Transform: 平移 缩放 旋转 即要想实现图片的平移.缩放.旋转,是修改它所在的Image控件的Transform变换属性. 下面在XAML中定义了Imag ...

  3. 地图的平移、缩放的实现(android版)

    一.平移地图 移动地图的原理是利用手指在屏幕上拖动的距离,转换为在地图上距离,把地图坐标加上偏移的距离实现地图移动. 由于地图是绘制到Bitmap上的,所以地图移动和缩放的过程只要改变Bitmap的矩 ...

  4. osg中使用MatrixTransform来实现模型的平移/旋转/缩放

    osg中使用MatrixTransform来实现模型的平移/旋转/缩放 转自:http://www.cnblogs.com/kekec/archive/2011/08/15/2139893.html# ...

  5. View的平移、缩放、旋转以及位置、坐标系

    原创 2015年05月12日 13:15:29 标签: Android / Scroll / Scale / Translation / Rotation 24733 Android开发中,经常会接触 ...

  6. ARFoundation - 实现物体旋转, 平移,缩放

    ARFoundation - 实现物体旋转, 平移,缩放 本文目的是为了确定在移动端怎样通过单指滑动实现物体的旋转,双指实现平移和缩放. 前提知识: ARFoundation - touch poin ...

  7. app使用微信支付成功后,点击返回到该app却跳到另外一个app去了

    刚接手了公司iOS的两个APP, 现在碰到了这样一个问题: 有一台iPhone在一个APP中使用了微信支付,支付成功后,点击返回到该APP,结果却跳到了另外一个APP去了. 这两个APP都是公司开发的 ...

  8. osg矩阵变换节点-----平移旋转缩放

    osg矩阵变换节点-----平移旋转缩放 转自:http://www.cnblogs.com/ylwn817/articles/1973396.html 平移旋转缩放这个三个是osg矩阵操作中,最常见 ...

  9. C# winform解决解决窗体第一次设置为最大化后,点击最大化按钮窗体无法居中问题

    public frmMain() { InitializeComponent(); //解决窗体第一次设置为最大化后,点击最大化按钮窗体无法居中问题 int x = Convert.ToInt32(( ...

随机推荐

  1. Android之注册界面练习

    今天要分享的是一个安卓注册小练习,记录一下自己的学习. 做一个注册页面. 要求填入用户如下信息: 用户名.密码.确认密码.性别(单选).爱好(多选,包括至少六个选项,如音乐.美术.阅读.篮球等).em ...

  2. 如何使用WordPress搭建网站

    1.空间的申请 阿里用户可以申请[阿里共享虚拟主机普惠版6元/年],虽然配置和空间不高,但也可以做个小站点的.当不满足当前配置的时候,随时可以进行升级,所以拿来练手还是比较合适的.   2.WordP ...

  3. Oracle时间日期计算--计算某一日期为一年中的第几周

    Oracle时间日期计算--计算某一日期为一年中的第几周 select to_char(sysdate-10,'yyyymmdd')||':iw:'||to_char(sysdate-10,'iw') ...

  4. Building Applications with Force.com and VisualForce(Dev401)(十二):Implementing Business Processes:Automating Business Processes Part 1

    ev401-013:Implementing Business Processes:Automating Business Processes Part 1 Module Objectives1.Li ...

  5. 给Linux命令设置别名的几个步骤

    1.查看系统中的别名 alias 2.临时更改别名 alias rm='command not found.' 3.永久更改别名 vim /etc/profile ---> 最后一行添加 ali ...

  6. Go语言库系列之dotsql

    导读:能单独拎出SQL文件的某一行或几行执行,是不是非常有趣?今天我们来介绍一下这个有意思的库--dotsql. 背景介绍 dotsql不是ORM,也不是SQL查询语句的构建器,而是可以在一个SQL文 ...

  7. Win10下 VSCode配置LaTex环境

    ------------恢复内容开始------------ 环境:win10 软件:Tex Live, VSCode ,Sumatra Tex Live官网下载速度很慢,所以推荐使用清华镜像下载链接 ...

  8. iOS 状态栏显示/隐藏

    iOS 10为止,将在plist文件中将 View controller-based status bar appearance 设置为NO,就可以用UIApplication设置状态栏. 注意,要在 ...

  9. C#算法实现获取树的高度

    我们知道,树类型作为数据结构中的重要一员,树的很多实现都是来自递归.本文想要实现的就是在桌面客户端项目开发中,经常用到的树结构(.Net平台下有个控件为TreeView).事实上,我们可能因业务需求自 ...

  10. 9.Metasploit制作木马后门

    01木马与后门   木马?后门? 木马和后门都有害,尤其是木马,它由攻击者主动发起,稍不留心就会被利用:后门原来是留给自己方便用的,但也有可能被非法利用,这两种程序都会给用户带来损失. 木马是指潜伏在 ...