Ошибка JVectorMap: преобразование атрибута: ожидаемое число, «масштаб (NaN) перевести (N …»

#javascript #html #css #jvectormap

#javascript #HTML #css #jvectormap

Вопрос:

как дела? Я пытаюсь создать форму, содержащую карту, в которой можно выбрать страну рождения. Для этого я использую JVectorMap. Однако в консоли разработчика Google Chrome я получаю следующее сообщение

 jquery-jvectormap-2.0.5.min.js:1 Error: <g> attribute transform: Expected number, "scale(NaN) translate(N…".
  

Кто-нибудь знает, в чем может быть проблема? Это мой код карты:

 <div id="world-map-log" style="width:100%;height:175px;"></div>

<script>
$(function() {
    $('#world-map-log').vectorMap({

        map : 'world_mill',
        backgroundColor : '#F9F9F9', //#F9F9F9
        regionsSelectable : true,

        regionStyle : {
            initial : {
                fill : '#B8E186'
            },
            selected : {
                fill : '#F4A582'
            }
        },
        
        zoomOnScroll: false,
        zoomButtons : false

    });
});
  

Вместе с этими библиотеками

     <script src="js/jquery.js"></script>
    <script src="js/jquery-jvectormap-2.0.5.min.js"></script>
    <script src="js/jquery-jvectormap-world-mill.js"></script>
    <link rel="stylesheet" href="css/jquery-jvectormap-2.0.5.css" type="text/css" media="screen" />
  

Спасибо, я надеюсь, что кто-нибудь сможет мне помочь,
Дэвид

Ответ №1:

Используете ли вы Jvectormap в компоненте начальной загрузки, который скрывается переключателем? Например, сворачивание BS или табуляция? Jvectormap и некоторым другим библиотекам SVG не нравится способ, которым Bootstrap обрабатывает это по умолчанию (через display:none). Они попадают в цикл отрицательной обратной связи, пытаясь определить значения масштаба по нулевым / нечисловым значениям.

Вам нужно переопределить поведение отображаемого элемента по умолчанию с помощью некоторого CSS, приведенный ниже пример будет охватывать компонент tab. Некоторые могут использовать класс ‘.show’ для управления им.

 .tab-content > .tab-pane:not(.active) {
    display: block;
    height: 0;
    overflow-y: hidden;
}
  

Ответ №2:

Найдите этот скрипт в jquery-jvectormap-2.0.5.min.js jvm.SVGCanvasElement.prototype.applyTransformParams=function(scale,transX,transY){this.scale=scale,this.transX=transX,this.transY=transY,this.rootElement.node.setAttribute(«transform»,»scale(» scale » ) перевести(» TransX «, » transY «)»)}

Заменить на
jvm.SVGCanvasElement.prototype.applyTransformParams=функция(масштабирование, TransX, transY){if (isNaN(масштаб) amp;amp; isNaN(TransX) amp;amp; isNaN (transY)) return;this.scale=scale,this.transX=transX,this.transY=transY,this.rootElement.node.setAttribute(«transform»,»scale(» scale » ) перевести(» TransX «, » transY «)»)}