javascript - SVG不绘制图形

标签 javascript jquery html svg geojson

我试图在 svg 中绘制这个 geojson,但它不起作用。 如果我将第六位小数更改为第一个坐标(值增加一)(如果它代表数字),但这是不正确的。

什么不能很好地代表?

<svg data-bind="html: acSvgPaths, attr: { 'viewBox': svgPaths }" width="100px" height="100px" style="background: #f3f3f3; width: 100%; margin: 0.5em 0;" viewBox="64.77013751864433 67.7408375870796 0.0041484832763671875 0.004410754101002112"><path fill-rule="evenodd" style="fill:green;opacity: 0.5" d="M64.77013**7**51864433,67.74087805444512 64.7740475833416,67.7408375870796 64.7742860019207,67.74480323649146 64.77013751864433,67.7452483411806 64.77013751864433,67.74087805444512 64.77013751864433,67.74087805444512 64.77013751864433,67.74087805444512Z"></path></svg>

它不会返回任何错误

最佳答案

您遇到了数值精度问题。

大多数(如果不是全部)2D 渲染库在内部使用浮点精度。 float 的精度限制意味着值可能会发生重大变化。如果我们将原始坐标值从 double 型转换为浮点型,我们会得到:

64.77013751864433 (double) ==> 64.770134 (float)

但数值稍大

64.77013851864433 (double) ==> 64.77014 (float)

请注意,我们在这里没有考虑 viewBox 将导致的额外转换。但希望您能够看到当您考虑浮点精度的限制时,某些元素的渲染可能会受到怎样的影响。

解决方法是增加 map 坐标的大小,这样坐标就不会达到浮点精度的极限。

例如,如果我们将所有坐标乘以 100,则 SVG 渲染效果良好。

<svg data-bind="html: acSvgPaths, attr: { 'viewBox': svgPaths }" width="100px" height="100px" style="background: #f3f3f3; width: 100%; margin: 0.5em 0;" viewBox="6477.013751864433 6774.08375870796 0.41484832763671875 0.4410754101002112"><path fill-rule="evenodd" style="fill:green;opacity: 0.5" d="M6477.013751864433,6774.087805444512 6477.40475833416,6774.08375870796 6477.42860019207,6774.480323649146 6477.013751864433,6774.52483411806 6477.013751864433,6774.087805444512 6477.013751864433,6774.087805444512 6477.013751864433,6774.087805444512Z"></path></svg>

关于javascript - SVG不绘制图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57200752/

相关文章:

javascript - 当选项值存在于选择中时,为什么元素不可交互?

javascript - 加载或创建字段时 JQuery 输入掩码失败

javascript - jQuery 单击事件的 event.target 返回被单击元素的子元素

javascript - 用于验证字符串的正则表达式,确保单词仅由一个特殊符号分隔

javascript - 如何在 nodejs 中的 async.each 中进行同步 http 调用

html - 添加 <a> 标签会搞砸一切

asp.net - 在页面加载时使用 JavaScript 填充文本框

html - 背景图像缺失 window.print

javascript - 通过字符串引用变量

javascript - 是否可以监听 "style change"事件?