地图无法完全在d3.js中呈现

t

我正在创建一个地球仪,在该地球仪上绘制许多位置。当光标悬停在圆圈上时,每个位置都用一个小圆圈标识,并通过工具提示提供信息。

我的问题是,全球地图大多数时候都无法完全渲染。那是各个国家都没有出现,并且代码的行为在这一点上完全改变了。我大多数时候都说,因为大约每5次刷新一次浏览器,它就会完全渲染一次。我觉得我的代码中有一个漏洞,或者JSON文件的语法问题使浏览器感到困惑。

顺便说一句:我有同样的问题是FF,Safari和Chrome。我正在使用D3.js的v3

这是渲染代码:

d3.json("d/world-countries.json", function (error, collection) {
    map.selectAll("path")
        .data(collection.features)
        .enter()
        .append("svg:path")
        .attr("class", "country")
        .attr("d", path)
        .append("svg:title")
        .text( function(d) { 
            return d.properties.name; });
});
track = "countries";
d3.json("d/quakes.json", function (error, collection) {
    map.selectAll("quakes")
        .data(collection.features)
        .enter()
        .append("svg:path")       
        .attr("r", function (d) {
            return impactSize(d.properties.mag);
        })
        .attr("cx", function (d) {
            return projection(d.geometry.coordinates)[0];
        })
        .attr("cy", function (d) {
            return projection(d.geometry.coordinates)[1];
        })
        .attr("class", "quake") 
        .on("mouseover", nodehi)
        .on("mouseout", nodelo) 
        .attr("d", path)
                .append("svg:title")
        .text( function(d) {
            var tip = d.properties.description + " long "+ (d.geometry.coordinates)[0] + " lat " + (d.geometry.coordinates)[1];
            return tip
        });
});

任何想法将不胜感激...

拉尔斯·科特霍夫(Lars Kotthoff)

之所以看到这种行为,是因为您正在进行两个d3.json彼此不独立的异步调用(to ),这是因为您选择元素并将数据绑定到它们的方式。根据异步调用的性质,您无法确定哪个首先完成,并且取决于哪个完成,您会看到正确或错误的行为。

在两个处理程序函数中,您都将附加path元素。在第一个文件中(对于世界文件),您还选择path了将数据绑定到它们的元素。如果另一个调用先完成,则path页面上将包含一些元素。这些将与您传递给的数据匹配.data(),因此.enter()选择内容不会包含您期望的所有元素。如果调用以另一种方式完成,则这不是问题,因为您正在quake其他处理程序中选择元素。

有几种方法可以解决此问题。您可以为所有路径分配标识类(已经在做),并相应地更改选择器-在第一个处理程序中,在do.selectAll("path.country")和第二个处理程序.selectAll("path.quake")

或者,您可以将两个调用嵌套在一起d3.json,以便仅在第一个调用完成后才进行第二个调用我会做这两个以确保何时绘制元素,但是出于性能方面的考虑,您可能仍希望同时进行两个调用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

D3JS foreignObject无法在Firefox中呈现

来自分类Dev

Webkit中无法正确呈现Next.JS中的TailwindCSS

来自分类Dev

D3.js无法在ASP MVC应用程序中呈现SVG

来自分类Dev

AngularJS选项卡中的Chart.js无法呈现

来自分类Dev

Vue.js中的组件通信无法正确呈现

来自分类Dev

从列表中删除项目后,反应js无法正确呈现

来自分类Dev

状态数组在 React.js 中无法正确呈现

来自分类Dev

完成Ajax后,变量Js无法在href标签中呈现

来自分类Dev

D3 JS-GeoJson(美国地图)-未加载

来自分类Dev

颜色无法正确呈现饼图d3

来自分类Dev

D3地图未呈现澳大利亚topojson文件

来自分类Dev

D3地图未呈现澳大利亚topojson文件

来自分类Dev

d3.js - D3 地图未显示在中国城市数据集中

来自分类Dev

呈现D3.js图之前,从GET请求中获取数据

来自分类Dev

地图标记无法呈现-Phonegap中的Google Maps Javascript API v3

来自分类Dev

加载组件无法在React.js表单组件中呈现吗?

来自分类Dev

使用Node js和D3实时在地图上绘制状态名称

来自分类Dev

需要D3地图文件uStates.js

来自分类Dev

无法从D3强制箭头图形中删除链接

来自分类Dev

无法在D3中向圈子添加文字

来自分类Dev

平铺的地图未完全呈现

来自分类Dev

在传单地图上的d3中捕获鼠标悬停

来自分类Dev

计算D3中的数组并获取该数字以可视化地图点

来自分类Dev

在传单地图上的d3中捕获鼠标悬停

来自分类Dev

读取一个巨大的 csv 文件并使用 d3 在 Javascript 中填充地图

来自分类Dev

如何使用d3 .js散点图在1900之前的x轴上呈现日期

来自分类Dev

我的X轴未呈现我想要的所有刻度线-D3 JS

来自分类Dev

D3 输出未在 Safari、Firefox、Edge 和 IE 中呈现。在 Chrome 中工作

来自分类Dev

HTML无法在Jade中呈现

Related 相关文章

  1. 1

    D3JS foreignObject无法在Firefox中呈现

  2. 2

    Webkit中无法正确呈现Next.JS中的TailwindCSS

  3. 3

    D3.js无法在ASP MVC应用程序中呈现SVG

  4. 4

    AngularJS选项卡中的Chart.js无法呈现

  5. 5

    Vue.js中的组件通信无法正确呈现

  6. 6

    从列表中删除项目后,反应js无法正确呈现

  7. 7

    状态数组在 React.js 中无法正确呈现

  8. 8

    完成Ajax后,变量Js无法在href标签中呈现

  9. 9

    D3 JS-GeoJson(美国地图)-未加载

  10. 10

    颜色无法正确呈现饼图d3

  11. 11

    D3地图未呈现澳大利亚topojson文件

  12. 12

    D3地图未呈现澳大利亚topojson文件

  13. 13

    d3.js - D3 地图未显示在中国城市数据集中

  14. 14

    呈现D3.js图之前,从GET请求中获取数据

  15. 15

    地图标记无法呈现-Phonegap中的Google Maps Javascript API v3

  16. 16

    加载组件无法在React.js表单组件中呈现吗?

  17. 17

    使用Node js和D3实时在地图上绘制状态名称

  18. 18

    需要D3地图文件uStates.js

  19. 19

    无法从D3强制箭头图形中删除链接

  20. 20

    无法在D3中向圈子添加文字

  21. 21

    平铺的地图未完全呈现

  22. 22

    在传单地图上的d3中捕获鼠标悬停

  23. 23

    计算D3中的数组并获取该数字以可视化地图点

  24. 24

    在传单地图上的d3中捕获鼠标悬停

  25. 25

    读取一个巨大的 csv 文件并使用 d3 在 Javascript 中填充地图

  26. 26

    如何使用d3 .js散点图在1900之前的x轴上呈现日期

  27. 27

    我的X轴未呈现我想要的所有刻度线-D3 JS

  28. 28

    D3 输出未在 Safari、Firefox、Edge 和 IE 中呈现。在 Chrome 中工作

  29. 29

    HTML无法在Jade中呈现

热门标签

归档