Похоже, plotOffset
расчет для ваших вкладок отличается и зависит от того, виден контейнер или нет.Я думаю, это потому, что jQuery не может рассчитать высоту элемента, который скрыт с помощью display: none
.В первом примере plotOffset
даст вам эти цифры:
{left: 22, top: 41}
, а для второго
{left: 7, top: 4}
Когда вы затем позвоните ctx.translate(plotOffset.left, plotOffset.top);
, вы, очевидно, будете иметь различную позицию метки наcanvas.
Самый простой обходной путь - это нормализовать перевод следующим образом:
ctx.translate(7, 3); // No need to care of plotOffset left and top
Использовать статически определенные поля меток вместо значений plotOffset.
Обновленные демонстрации:
http://jsfiddle.net/Sp8MP/5/
http://jsfiddle.net/Sp8MP/6/