2013-04-26 113 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