ОБНОВЛЕНИЕ: Новый JSFIDDLE Масштабирование теперь работает, отказались от defs и rect и просто добавили изображение. Но все равно застрял на переводе.
Перевод по-прежнему не работает в зуме. Я могу установить перевод на -100 для x и y, чтобы получить правильное размещение без увеличения. Но при масштабировании он, конечно, по-прежнему переводит его на -100, а не на большее значение, которое должно быть, чтобы оно оставалось на месте.
Кажется, что-то нужно в коде в разделе масштабирования внизу. Возился с частью, которая в настоящее время закомментирована, но пока не повезло.
// .attr("transform", function(d) { return "translate(" + (d.x - v[0]) * k + "," + (d.y - v[1]) * k + ")"; })
// .attr("x", function(d) { return d.r * k; })
// .attr("y", function(d) { return d.r * k; })
.attr("width", function(d) { return d.r * k; })
.attr("height", function(d) { return d.r * k; })
Вот JSFIDDLE. У меня есть упаковка круга d3 с растровым изображением внутри прямоугольника svg внутри каждого узла. Как вы делаете масштаб изображения при увеличении? Контейнер масштабируется, но изображение остается маленьким и повторяется при изменении масштаба. Пытался правильно настроить деф, но безрезультатно.
var defs = svg.append("defs")
// .data(nodes)
// .enter()
.append("pattern")
.attr("id", "bg")
.attr('patternUnits', 'userSpaceOnUse')
.attr('width', imageWidthHeight)
.attr('height', imageWidthHeight)
// .attr("transform", "translate(40,80)")
.append("image")
// .html("xlink:href", "img/" + function(d) { return d.image; })
.attr("xlink:href", "http://www.public-domain-photos.com/free-stock-photos-4/travel/yosemite/yosemite-meadows.jpg")
.attr('width', imageWidthHeight)
.attr('height', imageWidthHeight)
// .attr("transform", "translate(40,80)");
Кроме того, невозможно перевести контейнер/изображение в центр круга. Я пока закомментировал эти биты, потому что это все портит.
Пытались применить информацию из этих обсуждений, но все равно застряли. Спасибо.
http://bl.ocks.org/mbostock/950642#graph.json
https://groups.google.com/forum/#!topic/d3-js/fL8_1BLrCyo
Как вместо этого заполнить D3 SVG изображением цвета с заливкой?