2015-04-29 2 views
2

Я совершенно новичок в Node JS, и я хочу показать SVG-карту. Я попытался загрузить его как объект HTML, но он не работает, и даже если это так, я хочу изменить карту на основе определенных переменных (в частности, стран цвета на основе запроса).Узел JS - загрузка и изменение SVG-файла

Изменить: Я пытался показывая SVG, загрузив файл HTML, содержащий следующую строку:

<object type="image/svg+xml" data="image.svg">Nope.</object> 

SVG не показывает в браузере.

И что касается изменений в SVG, я знаю, как изменить SVG, а не как это сделать с помощью JavaScript/NodeJS (я совершенно им не знаком).

+0

вы должны объяснить свой запрос гораздо подробнее ... это неясно ... Вы можете отображать любую svg в html-страницу. И вы можете редактировать его с помощью атрибутов JS + html на объектах svg (пути, строки, прямоугольники и т. Д.) – Julo0sS

+0

, чтобы заполнить путь (объект вашей страны), вы должны просто добавить: fill = "# FF0000" или что-то еще в вашу страну путь ... – Julo0sS

+0

Спасибо за ваш комментарий, я добавил некоторые детали в исходный вопрос. Суть в том, что я ноб относительно JS/NodeJS, чтобы объяснить плохо сформулированный вопрос. – FloIancu

ответ

0

Я никогда не использовал Node.js, но я уже работал над файлами .svg с Javascript.

Во всяком случае, ваш код не может отображать любую SVG таким образом, вы должны просто показать его, как и любой HTML объекта на странице, как это:

...//html code 
<div id="svgContainer"> 
    <svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" xmlns:xlink="http://www.w3.org/1999/xlink"> 
     <g> 
      <path class="country" id="Spain" d="..." fill="none"></path> 
      <path class="country" id="Italy" d="..." fill="none"></path> 
      <path class="country" id="England" d="..." fill="none"></path> 
      <path class="country" id="Netherlands" d="..." fill="none"></path> 
     </g> 
    </svg> 
</div> 
...//html code 

Например.

Теперь вы хотите отредактировать стиль объекта svg (здесь ваша страна) на мероприятии. Просто добавьте слушателя событий на свой объект и отредактируйте его.

element.addEventListener("click",function(){ 
    //Do your change stuff here 
    //elementCountry is the svg "path" corresponding to a country 
    elementCountry.setAttribute("fill","#FF0000"); 
}); 

это наполнит заинтересованную "страну" в красном

Вы должны проверить это: http://www.w3schools.com/jsref/met_document_addeventlistener.asp

и это: http://www.w3schools.com/jsref/met_element_setattribute.asp

Надеется, что это помогает.

+0

Спасибо за ваш ответ! Я хочу обновить всю карту на основе массива значений. Как я могу обратиться к индивидуальному 'id'? – FloIancu

+0

Создайте свой svg из своего массива, затем ... Я не могу помочь без кода ... – Julo0sS

+0

Код довольно простой. У меня есть две параллельные массивы 'имена = [ "Андорра", ... "Зимбабве"]' и еще один 'цвета = [ "# 00CC00", ... "#ffffff"]'. Я хочу что-то вроде 'if (svgElementId == names [i]) svgElementFill = colors [i]'. Это возможно? – FloIancu

Смежные вопросы