放大/缩小时保持地图上 D3 对象大小不变

2023-12-08

我正在遵循以下示例http://bl.ocks.org/d3noob/raw/5193723/

示例中绘制的圆圈在放大时会增大。我无法找出保持圆圈大小相同的方法。

有任何想法吗?

Edit1:关于如何保持饼弧半径恒定的任何想法。我已经找到了保持圆半径恒定的方法,如下所示:

            g1.append("circle")
                .attr("cx", 200)
                .attr("cy", 200)
                .attr("r", 10)
                .style("fill", "red");

        var zoom = d3.behavior.zoom().on("zoom", function () {

                g1.selectAll("circle")
                    .attr("transform", "translate(" + d3.event.translate.join(",") + ")scale(" + d3.event.scale + ")")
                    .attr("r", function(d) {
                        return 10/d3.event.scale;
                    });
            });

同样,我有饼图的弧线,我希望在缩放时保持其大小:

                    var r = 4;
                    var p = Math.PI * 2;

                    var arc = d3.svg.arc()
                        .innerRadius(r - 2)
                        .outerRadius(r - 1)
                        .startAngle(0)
                        .endAngle(p * d.value1);
                    var arc2 = d3.svg.arc()
                        .innerRadius(r - 3)
                        .outerRadius(r - 2)
                        .startAngle(0)
                        .endAngle(p * d.value2);

                   var projection = d3.geo.mercator()
                        .center([0, 5])
                        .scale(200)

                    var translate = "translate(" + projection([77, 13])[0] + ", " + projection([77, 13])[1] + ")";
                    g.append("path")
                        .attr("d", arc)
                        .attr("fill", "maroon")
                        .attr("transform", translate);
                    g.append("path")
                        .attr("d", arc2)
                        .attr("fill", "green")
                        .attr("transform", translate);

关于如何保持弧型路径保持相同大小有什么建议吗?


您必须在缩放事件处理程序中添加一些额外的处理。将圆的半径设置为其标称值 (5) 除以缩放系数 (zoom.scale())。这样,当应用缩放比例时,结果将是恒定的外观尺寸。就像是:

var zoom = d3.behavior.zoom()
    .on("zoom",function() {
        g.attr("transform","translate("+ 
            d3.event.translate.join(",")+")scale("+d3.event.scale+")");
        g.selectAll("circle")
            .attr("d", path.projection(projection))
            .attr("r", 5/zoom.scale());
        g.selectAll("path")  
            .attr("d", path.projection(projection)); 
    });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

放大/缩小时保持地图上 D3 对象大小不变 的相关文章

  • 如何使用 Node.js 在 Firebase 中注册用户?

    PROBLEM 0 用户是在 Firebase 的身份验证系统中创建的 我在 身份验证 选项卡中看到它 1 但没有对数据库进行任何更改 2 页面似乎无限加载 3 控制台仅记录 Started 1 CODE router post regis
  • 我的用户脚本如何根据链接的文本获取链接?

    给定目标页面上的 HTML dd class ddTit a href http abc xxx com 54781 html target blank special text words a dd 我怎样才能根据 获取url特殊文字词
  • React Native 将样式设置为 State

    我想用backgroundColor of style1作为一种状态 并在函数中改变它change 我怎样才能访问style1 我的观点是调用该函数change从另一个函数 使按钮将其颜色更改为黄色 然后在一段时间后再次将其颜色更改为蓝色
  • 从字符串中删除货币符号并使用 Javascript 中的单行转换为数字

    我下面有一个字符串 它是以英镑为单位的价格 我想删除货币符号 然后将其转换为我可以用来与另一个值进行比较的数字 价格 例如 X gt Y 14 50 我之前已将字符串转换为用于货币的数字 var priceNum parseFloat pr
  • javascript获取上周的第一天和最后一天[重复]

    这个问题在这里已经有答案了 我想用 javascript 获取上周的第一天 星期一 和最后一天 星期日 我已经检查过其他主题 但它不起作用 我还需要处理前一周是否是两个不同的月份 我正在使用此代码 但最后一个星期日是 06 03 2014
  • 了解执行模型和事件循环

    我读过很多关于JavaScript单线程执行模型 事件循环和事件队列的文章 但有一件事尚不清楚 我创建了一个小提琴来说明我的问题 http jsfiddle net yzpmf67f http jsfiddle net yzpmf67f
  • 通过单击字段启用非活动字段

    是否可以有一组非活动字段 如果单击其中一个字段 则某些字段将变为必填字段并运行某些代码段 举例来说 您显示了三个字段
  • GeoJSON 要素坐标未显示在 OpenLayers 地图上

    我正在尝试显示一个GeoJSON地图上的多边形 我使用了 OpenLayers 提供的示例以及以下数据 但仅显示第二个多边形 var geojsonObject type FeatureCollection crs type name fe
  • HTML5 拖放 - 没有透明度?

    当我将一个元素拖放到页面上时 该元素会变成 幻影 基本上它获得了一些透明度值 有什么办法可以做到吗opacity 1 看来是做不到了 拖动的元素被放入具有自己的不透明度 低于 1 的容器中 这意味着虽然您可以降低拖动元素的不透明度 但您无法
  • 将服务连接到现有的流星帐户

    我正在设置一个流星应用程序 其中涉及使用用户名和密码进行注册 然后希望将该帐户与 Facebook 和 Twitter 连接起来 我只需使用帐户包即可轻松启动并运行第一部分 但是当我有一个登录用户调用 Meteor loginWithFac
  • 使用 test() 通过正则表达式进行信用卡验证

    我正在尝试完成一些作业 看来这本书可能做错了 我有一个简单的 html 页面 允许用户在我们的例子中选择信用卡 美国运通卡 然后 用户输入一个数字并根据正则表达式评估该数字 我的问题最终是当 test 计算它返回的数字时是布尔值还是字符串
  • 替换 Javascript 中的引号?

    对于我正在制作的网络应用程序 我将收到文本字符串 其中偶尔包含引号 因为我接下来要 document writing 字符串 所以需要将它们更改为撇号或转义 我该怎么做 因为当我尝试时它似乎不起作用 特别是我认为因为字符串的引号阻止了脚本的
  • 如何在流程图中间隔刻度线?

    我下面有一个流程图 您将看到标签被压缩 我想使刻度之间的宽度确保显示所有标签 标记如下 div div class graph info a href span span a a href class active span span a
  • 用于客户端存储和服务器端同步的javascript库[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 javascript 库 它可以让我将数据存储在客户端数据库中 并在后台自动将数据库同
  • 在javascript中定义Date.parse的格式[重复]

    这个问题在这里已经有答案了 我正在使用 Date parse 将字符串转换为 JavaScript 中的日期 但是 如果字符串看起来像 10 11 2016 它会被解释为 2016 年 10 月 11 日 我需要将其解释为 2016 年 1
  • 如何修复 AJAX 在选中复选框时始终触发?

    有时这个 AJAX 会触发 有时不会 让我解释一下 habit js document ready function habit check change function habit this parent siblings habit
  • Safari 的 Javascript 与 document.write 的问题

    我的问题只发生在 Safari 上 IE FF Chrome 和 Opera 都可以完美运行 我正在向 DOM 添加一个对象 与 YouTube 的方式完全相同 具体取决于 ActiveX 或 NPAPI 因此在确定写入对象类型后 我通过以
  • JavaScript 数组中的负索引是否会影响数组长度?

    在javascript中我定义了一个像这样的数组 var arr 1 2 3 我也可以做 arr 1 4 现在如果我这样做 arr undefined 我也失去了对值的引用arr 1 所以对我来说 从逻辑上来说 arr 1 也是arr 但是
  • JS中如何过滤多个字符串? [复制]

    这个问题在这里已经有答案了 我希望能够过滤数组中的多个字符串 类型 例如我想过滤类型meat并输入fruit在下面的数据结构中 我想要实现的是过滤数据对象 const data type meat food hamburger type f
  • 将元素添加到 D3 圆包节点

    我正在尝试制作一个可缩放的圆形包装图 我希望每个子圆圈包含一个较小的图表 该图表始终具有相同的结构 即 4 列 只有条形的高度会改变 我尝试添加一个简单的rect到目前为止我的图表 但矩形没有添加到圆圈中并且是静态的 JS var marg

随机推荐

  • Spring - 用新的属性文件值替换 bean 属性值

    我有一个属性文件 并使用 Spring 属性占位符 将值设置为 Spring bean 现在 该属性文件可以在运行时修改 有没有办法用这个新修改的属性值刷新 Spring bean 的属性 特别是 我有很多单例豆 我怎样才能用新值刷新它们
  • 将字符串转换为日期时间 dd/MM/yyyy hh:mm:ss tt

    我怎样才能转换这个7 3 2015 12 40 02 PM转换为具有格式的日期时间 dd MM yyyy hh mm ss tt 我已经这样做了 BreackEndTime DateTime ParseExact configViewMod
  • vim 中按名称对函数进行排序

    Vim 可以使用 sort 命令对行进行排序 我想使用 vim 对源代码中的函数进行排序 例如 前 def a pass def c pass def b pass after def a pass def b pass def c pas
  • 图像-Xamarin.Form

    我已经实现了一个登录页面 现在我想添加一个标题图像 但是 图像不会显示在视图上 public LoginView InitializeComponent Title Login Content new StackLayout Spacing
  • 如何在Asp.net CORE MVC中的浏览器上下载PDF文件

    我使用下面的代码来下载 pdf 格式的 SSRS 报告 string URL http ssrs test com ReportS UAT FOLDER URL URL SRNo 122 rs Command Render rs Forma
  • 在调试模式下启动服务器时,阻止 Eclipse 自动打开调试透视图

    有几个关于堆栈溢出的示例 说明如何在调试器激活 即遇到断点 这可以通过以下方式实现 首选项 gt 运行 调试 gt 透视图 gt 当应用程序挂起时打开关联的透视图 我的问题不是这个 每当我启动我的服务器在调试模式下 将打开调试透视图 由于我
  • std::vector 中如何管理动态内存?

    std vector如何实现对元素数量变化的管理 是使用realloc 函数 还是使用链表 Thanks 它使用作为第二个模板参数提供给它的分配器 那就这样吧 假设它在push back中 让t是要推送的对象 if size capacit
  • angularjs ng-repeat 按数字顺序排序字符串数组

    我有一个 id 类似的帖子列表1 2 3 4 5 6 7 8 9 10 11 12 json格式 id 的类型为字符串 但我想按照它的数字顺序来排序 正常 orderBy fiche id 列表显示如下 1 10 11 12 2 3 4 5
  • 在 Matlab 中使用 dlmcell 换行 - 在 Notepad++ 中显示,但在记事本中不显示

    我正在使用 Matlab 中的 dlmcell 函数来输出文本 每次使用 dlmcell 附加时 我都希望在新行上显示文本 当我在 Notepad 中打开书面文档时 每个文本片段都会按照我的需要换行 然而 用windows自带的记事本打开
  • 使用C库函数设置系统时间

    我可以使用 struct tm 和 time localtime asctime 获取系统时间 但是我需要有关如何使用 C 程序设置系统时间的帮助 如果您不想执行 shell 命令 您可以 正如您提到的 使用 settimeofday 我将
  • 如何创建具有值映射的自定义悬停工具

    我正在尝试创建一个自定义悬停工具 使用该工具获取绘图的 y 值并将该值映射到不同的值 到目前为止我可以想出的实现此功能的代码是 from bokeh models import HoverTool import holoviews as h
  • 将 ZonedDateTime 转换为字符串

    我需要将当前时间作为字符串存储在数据库中 时间可以位于不同的时区 因此我正在考虑使用 Java SE 8 的新 ZonedDateTime 类 我注意到 toString 方法自动输出 2016 04 15T17 40 49 305 05
  • PHP 每隔周三选择一次

    我需要帮助 选择从 2012 年 5 月 2 日开始每隔一个星期三 下面的代码选择从当前所在周开始每隔一个星期三 但我需要设置开始周 我熟悉 PHP 但不熟悉 php 日期 所以请尽可能具体 我找到了这个 number of dates 1
  • 使用 Jackson 注释序列化和解包 POJO 中的 Map 对象

    我有一个 POJO 其属性名为 paramMap 作为 Map 类型 import java util HashMap import java util Map import com fasterxml jackson annotation
  • 时间序列中的每小时平均值

    这是一个具有每小时智能电表数据且 freq 24 的时间序列 它是在三天内测量的 所以first day 1 24 second 25 48 third 49 72 我想要三天内每小时的平均值 例如 t 1 t 25 t 49 3 这样我就
  • 如何仅将 CSV 中的唯一值添加到 ComboBox 中?

    我想读取 csv 文件并将单词 Jakarta 和 Bandung 放入组合框中 这是输入 id from 1 Jakarta 2 Jakarta 5 Jakarta 6 Jakarta 10 Bandung 11 Bandung 12 B
  • ORA-28040: 没有匹配的身份验证协议

    即使按照以下设置 我仍然面临这个问题 更换ojdbc14 jar with ojdbc6 jar 也尝试过ojdbc5 jar Added SQLNET ALLOWED LOGON VERSION SERVER 8 到 sqlnet ora
  • 精灵套件中的裁剪/蒙版圆形图像节点会产生锯齿状边缘

    是否可以为没有锯齿状边缘的图像节点提供圆形蒙版 裁剪 按照苹果公司的这个例子 https developer apple com reference spritekit skcropnode 结果并不理想 您可以点击链接查看 let sha
  • 从服务获取登录用户名

    我有一项必须登录本地管理员才能安装的服务 此服务的目的是在用户登录或注销时记录其用户名 我终于找到了一些我认为可以工作的WMI代码 但它仍然返回管理员 为什么这不起作用 var query new ObjectQuery SELECT FR
  • 放大/缩小时保持地图上 D3 对象大小不变

    我正在遵循以下示例http bl ocks org d3noob raw 5193723 示例中绘制的圆圈在放大时会增大 我无法找出保持圆圈大小相同的方法 有任何想法吗 Edit1 关于如何保持饼弧半径恒定的任何想法 我已经找到了保持圆半径