2013-04-26 59 views
2

我寻找可以像转换功能:将SVG多边形点转换为路径?

var points="270,328 270,376 342,376 342,368 358,368 358,320 314,320 298,336 278,336" 

到SVG格式路径,我已经看到了this question/answer,但我得到一个错误:遗漏的类型错误:无法读取属性“ownerSVGElement”的未定义。这是因为我将我的var点放入该函数中,这不是为此设计的,我认为它需要完整的xml或其他东西。

任何建议都很好,特别是强制插图画家导出路径而不是多边形!

谢谢!

回答

7
var points="270,328 270,376 342,376 342,368 358,368 358,320 314,320 298,336 278,336" 

var p = points.split(/\s+/); 
var path = ""; 
for(var i = 0, len = p.length; i < len; i++){ 
    path += (i && "L" || "M") + p[i] 
} 

console.log(path) 
=> M270,328L270,376L342,376L342,368L358,368L358,320L314,320L298,336L278,336 
+0

我有时会得到这个:M630,352L630,306LLLLL704,314L704,356L718,356L718,384L702,368L646,368L646,360L638,360L638,352LLL,和他们的arent应该有一个“z”结束? – dezman 2013-04-26 22:03:38

+3

更新了我的答案。另外,如果你想关闭路径,你只应该添加一个z。 – 2013-04-27 00:14:55

+1

谢谢,它的工作原理。但是这可能更具可读性。 'path ='M'+ points.replace(/ \ s +/g,'L');' – 2015-03-06 15:05:03