Ошибка в Kartograph.js

Я использую 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 ответа

Решение

Вам нужно определить метаданные в файле 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>

Если вы создали svg с помощью kartograph.py, вам может понадобиться добавить слои, добавленные в 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> g# кое-что> ...

Имя одного из слоев - это "что-то" после "g#". В коде это "id" элемента "g".

Надеюсь, это поможет вам...

Другие вопросы по тегам