Поскольку вы работаете с svg & paths, нацеливание на океан с помощью селекторов css и отсутствие влияния на другие вещи без добавления к нему идентификатора или класса будет очень непрактично (теоретически вы можете увидеть, сохраняет ли он ту же позицию в svg group [x] и нацелите его селектором: nth-child (x), затем перезапишите свойство: hover fill, но это не кажется лучшим способом)
У него уже есть другой цвет, так что в какой-то момент он явно действует сам по себе. Я бы попытался найти, где это изменено в JS, и посмотреть, есть ли вариант, который вы могли бы передать за океан. Функция d3 .geo кажется хорошим местом для поиска, а также для просмотра json, которое вы проходите.
Потенциально полезные ссылки:
https://www.tutorialspoint.com/d3js/d3js_geographies.htm
Изменить цвет на карте D3
Извините, я не смог вам прямо ответить, но я тоже новичок в d3, и я ' м тоже любопытно по этому поводу. Если вы поймете, как это сделать, мы будем очень признательны, если вы разместите свое открытие здесь :)
РЕДАКТИРОВАТЬ: Думаю, я что-то нашел! Я все еще работаю над быстрой настройкой, чтобы проверить это, но я думаю, что делаю это так:
.style("stroke", (feature) => {
if (feature.continent != "Seven seas (open ocean)"){ return "rgba(8, 81, 156, 0.2)"}
else {return "rgba(255, 255, 255, 0.2)"}
})
.style("fill", (feature) => {
if (feature.continent != "Seven seas (open ocean)"){ return "rgba(8, 81, 156, 0.6)"}
else {return "rgba(255, 255, 255, 0.6)"}
})
.classed("ocean-area", (feature) => {
if (feature.continent != "Seven seas (open ocean)"){ return true}
else {return false}
});
вместо этого:
.attr("stroke", "rgba(8, 81, 156, 0.2)")
.attr("fill", "rgba(8, 81, 156, 0.6)")
где вы связываете, вы data и создание путей, должно работать . Он должен отфильтровать, является ли свойство объекта continent (в данных json) «открытым океаном» и вернуть тот или иной цвет, а затем сделать то же самое, чтобы добавить класс в область океана и перезаписать стиль: hover с помощью этот CSS селектор
http://www.d3noob.org/2013/01/select-items-with-if-statement-in-d3js.html
Последнее изменение:
Я слишком ужасен в d3, чтобы даже получить локальную копию этого работает: / но сравнивая пример с вашим, я вижу, что в примере на самом деле нет заливки над океаном. Присмотревшись к вашему, я вижу, что над океаном есть заливка, а также некоторые не имеющие выхода к морю пятна, которые являются частью той же заливки и поэтому меняют цвет, когда парят с ней над океаном. Это заставляет меня думать, что это связано с вводимыми данными или даже со способом форматирования данных. Но после всего дня я сдаюсь, так что удачи и спасибо следующему человеку!