javascript - 在svg unsig javascript中获取最长线段的长度
问题描述
我想找到一种方法来获取 svg 路径中最长线段的长度。由于路径可以从一个点跳转到另一个点,因此该getTotalLength()
命令不起作用。作为一个简单的示例,请查看以下路径:
<path d="
M 0 0 L 100 0
M 0 10 L 50 10
M 0 20 L 150 20
">
虽然getTotalLength()
输出300
,我想150
作为我的输出。有没有办法做到这一点?
解决方案
我找到了解决问题的方法。它通过将路径分成多个段并分别测量来工作:
function maxSectionLength(path){
let segments = path.attributes.d.value.split(/(?=[m,M])/),
testPath = document.createElementNS('http://www.w3.org/2000/svg',"path"),
max = 0;
for(let d of segments){
testPath.setAttributeNS(null, "d", d)
max = Math.max(max,testPath.getTotalLength());
}
return max;
}
推荐阅读
- css - SVG 悬停在 Firefox 中不起作用
- aspnetboilerplate - 如何更新 aspnetboilerplate 中的实体?
- r - R 错误:“robustbase”的包加载失败。robustbase.so:未定义符号:is_redescender
- javascript - 如何使用 PHP 获取一年中的所有星期六,并将每个星期六与他们的周数相关联
- angularjs - 当下拉列表更改AngularJS中的值时,如何获取表单的$原始状态?
- amazon-web-services - 分布式文件系统的 S3 与 EFS 传播延迟?
- asp.net - 两个 recaptcha 控件,其中一个不工作
- arrays - 更好的 Swift 数组排序方法?
- swift - Swift Switch 语句
- java - 如何将参数传递给另一个类中的数组?