あなたはちょうどそれが仕事をしたい場合:
var polys = document.querySelectorAll('polygon,polyline');
Array.prototype.forEach.call(polys,convertPolyToPath);
function convertPolyToPath(poly){
var path = document.createElementNS('http://www.w3.org/2000/svg','path');
var points = poly.getAttribute('points').split(/\s+|,/);
var x0=points.shift(), y0=points.shift();
var pathdata = 'M'+x0+','+y0+'L'+points.join();
if (poly.tagName=='polygon') pathdata+='z';
path.setAttribute('d',pathdata);
poly.parentNode.replaceChild(poly,path);
return path;
}
を使用すると、SVGで周りにロールする場合DOM:
function convertPolyToPath(poly){
var path = document.createElementNS(poly.ownerSVGElement.namespaceURI,'path');
var segs = path.pathSegList;
var pts = poly.points;
for (var i=0,len=pts.numberOfItems;i<len;++i){
var pt = pts.getItem(i);
var func = i==0 ? 'createSVGPathSegMovetoAbs' : 'createSVGPathSegLinetoAbs';
segs.appendItem(path[func](pt.x,pt.y))
}
if (poly.tagName=='polygon') segs.appendItem(path.createSVGPathSegClosePath());
poly.parentNode.replaceChild(poly,path);
return path;
}
編集:ここでアクションで上記の両方を参照してください。
最後に http://phrogz.net/svg/convert_polys_to_paths.svg
、あなたは文字列(.getAttribute('points')
)としてのポイントを持っているだけでパスデータを希望する場合:
function svgPolyPointsToPathData(points,closePath){
points = points.split(/\s+|,/);
var pathdata = 'M'+points.shift()+','+points.shift()+'L'+points.join();
if (closePath) pathdata+='z';
return pathdata;
}
あなたはJavaScriptのソリューションをしたいですか?ソース・データはどのようなものです: ''要素と実際のSVGファイル?パスの 'd'属性値だけを結果として戻したいのですか?それとも、その場で新しい '' 要素に変換されたポリゴンをしたいですか? –
Phrogz