使用GIMP我已经在http://upload.wikimedia.org/wikipedia/commons/9/95/Continents.svg中获得了每个大陆的路径,但现在我无法弄清楚如何将此SVG文件转换为类似的内容(从https://github.com/thomaspeklak/raphaeljs-worldmap中选取):
您能否指导我如何将SVG路径转换为Raphael Path?
africa.push(W.path("M13728 10231 c-34 -19 -84 -21 -109 -5 -6 4 -15 1 -19 -5 -5 -9 -14 -9 -35 1 -22 10 -29 10 -33 0 -2 -6 -11 -12 -21 -12 -9 0 -23 -6 -29 -12 -10 -10 -17 -10 -32 0 -27 16 -55 15 -190 -7 -113 -19 -180 -42 -180 -63 0 -5 -7 -8 -15 -5 -8 4 -17 2 -20 -3 -4 -6 -13 -10 -21 -10 -8 0 -26 -11 -40 -25 -14 -14 -30 -25 -37 -26 -25 -2 -62 3 -70 10 -4 4 -33 4 -65 0 -63 -9 -100 6 -109 42 -6 20 -20 24 -39 11 -6 -4 -22 -32 -35 -62 -34 -81 -57 -108 -119 -137 -60 -29 -120 -82 -120 -107 0 -9 -10 -31 -22 -47 -18 -24 -23 -44 -23 -94 0 -38 -5 -69 -12 -76 -7 -7 -13 -18 -13 -24 0 -5 -16 -24 -36 -40 -20 -17 -45 -38 -56 -48 -23 -21 -80 -47 -103 -47 -22 0 -36 -16 -62 -72 -13 -27 -27 -48 -31 -48 -27 0 -82 -82 -82 -123 0 -24 ")
)
.attr(attr)
.scale(0.016963, -0.016963, 0,0)
.translate(0,-15000);
- 谢谢你
答案 0 :(得分:7)
首先,你正在使用向量,因此你可能会在inkscape('开源Adobe Illustrator')中获得比gimp('开源Adobe Photoshop')更好的结果。
一个好的第一步是将它导入到Inkscape中,使用任何Inkscape相当于Illustrator的路径简化工具(假设文件大小比大多数维基百科SVG地图中的高级细节更重要 - 请注意它不要不打破国家边界,并导出为SVG。您可能还希望在Inkscape中为每个国家/地区提供适当的ID(例如国家/地区名称或国家/地区代码),如果他们还没有,以便以后节省时间。
然后把它变成拉斐尔逻辑,有三个选择:
使用Ready Set Raphael (rsr)这是免费SVG到raphael转换器 Web服务。除非自我写这篇文章以来rsr已经更新,否则你可能想要整理生成的代码:
paper.setStart();
放在路径块之后var world = paper.setFinish();
之前(不要忘记将paper
替换为您正在使用的内容) .attr()
替换掉,除了任何设置的ID,然后将attr()
应用于填充和描边,而不是每个单独的元素。使用其他SVG到Raphael转换器或导入程序(例如this one)。我不知道这些是否有用,我个人对Ready Set Raphael有过更好的体验。
d="lots of co-ordinates"
中的字符串从每个SVG路径复制并粘贴到var someCountry = paper.path("lots of co-ordinates"); someSet.push(someCountry);
之类的内容一样简单。这将耗费时间,因为有这么多国家(170左右),但额外的控制可能会节省时间。不要忘记learn from examples。