Ваша проблема может быть решена путем установки системы координат градиентов в пространстве пользователя (вместо стандартного ограничивающего прямоугольника).
вы можете попробовать
<defs>
<linearGradient id="red_black" x1="0%" y1="0%" x2="0%" y2="100%" gradientUnits="userSpaceOnUse">
<stop offset="0%" style="stop-color:rgb(255,0,0);stop-opacity:1"/>
<stop offset="100%" style="stop-color:rgb(255,255,0);stop-opacity:1"/>
</linearGradient>
</defs>
решение не игнорирует комментарий e.nelson - здесь происходит то, что к каждой подгруппе, представляющей нации, все еще применяется отдельный экземпляр градиента, в то время как все эти экземпляры имеют одинаковое начало координат и одинаковые преобразования в пространстве пользователя - поэтому в любой точке окончательного рендеринга не имеет значения, какой экземпляр градиента видим.
требуется две корректировки:
[несовершеннолетний]
Вы должны отрегулировать смещения y1 / y2 (или смещения останова) определения градиента - поскольку они относятся к пользовательскому координатному пространству всей карты, Африка покрывает только часть градиента между определенными остановками. попробуйте y1="50%"
и y2="100%"
.
[средний]
если вы посмотрите на svg g-elements, определяющие формы страны, вы заметите, что некоторые из них подвергаются дополнительному переводу. они эффективно смещают пользовательскую систему координат и, следовательно, также применяются к градиенту, который заставляет фигуры затронутой страны выглядеть как пятна на карте.
это преобразование spurios, вероятно, является артефактом действий в генераторе, используемом для создания карты.
это можно исправить, добавив сдвиги перевода к каждой абсолютной координате в элементах пути внутри соответствующих g-элементов. поскольку эти пути определены с использованием относительных координат для сшиваемых частей, это сводится к изменению координат начальной и конечной команд «С» в атрибуте «d» пути.
Я подготовил специальный perl-скрипт для нормализации структуры кода svg, представляющего границы страны, который реализует вышеупомянутые модификации. Обратите внимание, что эти изменения могут быть сделаны довольно удобно и в JS. Это результат .
надеюсь, что это поможет, и напишите мне, если вам нужна дополнительная информация о том, как выполнить упомянутые корректировки.
PS:
я только заметил, что Мозамбик все еще отсутствует в сгенерированном результате - для формы этой отдельной страны был задан еще один перевод. эта незначительная деталь должна быть добавлена позже сегодня, однако ...
результат http://collapsar.co.ohost.de/data/astcko.03.png