Kartograph.js出错

时间:2014-04-29 16:25:44

标签: kartograph

我正在使用Kartograph.js加载svg地图。但是当页面加载时我收到以下错误:

Uncaught TypeError: Cannot read property 'getAttribute' of undefined
View.fromXML
Kartograph._mapLoaded
j
k.fireWith 
x
b

这是我的代码:

<html>
<head>
    <script type="text/javascript" src="jquery.min.js"></script>
    <script type="text/javascript" src="raphael-min.js"></script>
    <script type="text/javascript" src="kartograph.js"></script>
    <script type="text/javascript">
        function loadMap(){
            var map = kartograph.map('#map', 600, 0);

            map.loadMap('World.svg')
        }
    </script>
</head>
 <body onLoad="loadMap()">

    <div id="map"></div>
</body>
</html>

2 个答案:

答案 0 :(得分:1)

您需要在svg文件上定义元数据。 例如:

<metadata><views><view h="604.816027229" padding="0" w="1000"><proj id="laea-usa" lat0="45" lon0="-100"/><bbox h="321.76" w="532.88" x="746.23" y="918.78"/></view></views></metadata>

答案 1 :(得分:1)

如果您使用kartograph.py创建了svg,则可能需要添加svg中添加的图层,如下所示:

        function loadMap(){
            var map = kartograph.map('#map', 600, 0);

            map.loadMap('World.svg', function() {
                 map.addLayer('your_first_layer');
                 map.addLayer('your_second_layer');
            });
        }

要查找要添加的图层的名称:

  • 以文本形式打开您的svg文件,例如在Firefox中使用右键单击页面检查器。
  • 在第二行,你会看到:svg&gt; g#something&gt; ...

其中一个图层的名称是“g#”之后的“某物”。在代码中,它是“g”元素的“id”。

希望这可以帮助你...