从libre地图遇到svg文件的问题

时间:2015-02-17 23:06:31

标签: vector svg mapping

有一段时间我觉得我的代码有问题,但看起来libre地图上的svg文件存在问题。

我一直试图将他们的svg文件与jvectormaps一起使用,但无论如何它们都无法工作。然后我尝试使用object和img标签来嵌入它们,但它们仍然无法工作,所以很明显这些svg文件存在问题。我尝试了一些方法,比如删除xml标签,并更新doctype,但仍然没有运气。

这是我遇到问题的文件之一。 http://libremap.org/data/boundary/2000/sub_county/svg/cs42_d00.svg

1 个答案:

答案 0 :(得分:0)

是。他们的SVG存在问题。根<svg>元素应该具有xmlns属性,但它不会。

EG。您链接的地图以:

开头
<svg width="100%" height="100%" preserveAspectRatio="xMidYMax"
     viewBox="2.682664 439.717923 49.914144 29.355176">

它应该是:

<svg xmlns="http://www.w3.org/2000/svg"
     width="100%" height="100%" preserveAspectRatio="xMidYMax"
     viewBox="2.682664 439.717923 49.914144 29.355176">

独立SVG必须具有namespace属性。你应该把它作为一个bug报告给他们。

在此期间,您可以下载SVG并自行更正。然后使用您的本地副本。

<强>更新

SVG还有另一个问题。它将fill设置为nonestroke-width设置为0(请参阅第8行)。因此默认情况下不显示任何内容如果你改变其中任何一个(见第8行),它将显示。

<g id="Unknown_Area_Type_cs42_d00_e00" style="fill:grey;stroke:rgb(255,0,0);
   stroke-width:0.01;stroke-linecap:round">

也许您打算使用CSS来设置地图样式。拥有以下内容也应该有效:

g#Unknown_Area_Type_cs42_d00_e00 *
{
   fill: grey;
   stroke:rgb(255,0,0);
   stroke-width:0.01;
}