将多边形添加到d3 vornoi导致错误
Adding polygon to d3 vornoi causing an error
我想扩展这个例子(http://bl.ocks.org/mbostock/4060366),并制作一个功能,以便如果用户单击一个多边形,则将该多边形添加到其他多边形中(加上中间的点)。我已经添加了这些行
.on("click", function () {
svg.append("circle").attr("transform", "translate(" + d3.mouse(this) + ")").attr("r", 1.5);
vertices.push(d3.mouse(this));
})
后的jsut
.on("mousemove",....
它起作用了-添加了多边形,但函数出现了奇怪的错误
function polygon(d) {
return "M" + d.join("L") + "Z";
}
表示"Uncaught TypeError:无法读取未定义的属性'join'"
在我把多边形推到"顶点"后,我不会调用这个函数,但无论如何都会出现错误。。。你能告诉我我做错了什么吗?
据我所知,这个错误是由以下事实引起的:当你点击时,它需要绘制一个额外的路径,但因为你的鼠标指针正好在路径的边缘,所以值(d)没有定义。您会注意到,黄色高亮显示区域只有在移动鼠标指针后才会更新。
这为您提供了几个解决方案。
-
隐藏错误。您可以通过将
if (typeof d == 'undefined') return;
添加到polygon
函数的开头来完成此操作。 -
"破解"解决方法-在重新绘制时修改鼠标位置。将
vertices[0] = [vertices[0][0]- 5, vertices[0][1] + 5];
添加到redraw
函数的开头。这将防止鼠标与新多边形发生冲突。注意,-5
和+5
是任意值。
相关文章:
- Node.js v6.2.0类扩展不是函数错误
- Jquery菜单操作不稳定,定位不正确,存在一般错误
- document.open/document.write没有正确地清除chrome中的文档——这是chrome的错误吗
- 试图在引导模式内动态生成图表,得到offsetWidth错误
- 为什么会出现错误;未捕获的类型错误:undefined不是函数;
- 我如何修复包含在captcha的addthis中的错误
- 同样,同样的错误'ahorcado.js:26未捕获类型错误:无法读取属性'beginPath'
- 节点是否需要模块传递带有方括号的arg?这是个错误吗
- Webpack/Rect:遵循egghead.io教程,但出现错误:您可能需要一个合适的加载程序来处理此文件类型
- CKFinder 3为所选文件返回错误的URL
- 同位素库错误:未捕获错误无布局模式包装生产线8
- 铬:“;未捕获的语法错误:意外的标记:"
- 如何通过自己获得Chrome扩展的用户反馈/错误报告
- 相位器状态未捕获参考错误
- /undefined在我的404错误日志中多次出现
- Javascript未捕获语法错误意外的标识符错误
- javascript:如何在antlr生成的Lexer中进行错误处理
- Angularjs工厂注入错误
- 可以设置“;文件名"发生错误时显示的内联脚本标记的
- 将多边形添加到d3 vornoi导致错误