Im использует функцию масштабирования d3.js для увеличения изображения внутри svg. Я использую маску, чтобы показать нижележащее изображение внизу. Если я не масштабирую маску, и координаты курсора мыши совпадают идеально. Однако, когда я начинаю увеличивать координаты мыши, не переводится на уровень масштабирования, поэтому отображение карты больше не выстраивается с курсором.d3.js масштабирование координат мыши
вот что я использую до сих пор ... Я предполагаю, что при масштабировании должен быть какой-то перевод координат?
var lightMap = d3.select("#lightMap").call(d3.behavior.zoom().scaleExtent([1, 3]).on("zoom", zoom));
var darkMap = d3.select("#darkMap").call(d3.behavior.zoom().scaleExtent([1, 3]).on("zoom", zoom));
function zoom() {
lightMap.attr("transform", "translate(" + d3.event.translate + ")scale(" + d3.event.scale + ")");
darkMap.attr("transform", "translate(" + d3.event.translate + ")scale(" + d3.event.scale + ")");
}
var svg = d3.select("svg");
svg.on('mousemove', function() {
var coordinates = [0, 0];
coordinates = d3.mouse(this);
var x = coordinates[0];
var y = coordinates[1];
primaryCircle.setAttribute("cy", y + 'px');
primaryCircle.setAttribute("cx", x + 'px');
});
У вас есть скрипка или что-то еще? Предполагаю, что это связано с тем, что ваше увеличение мыши происходит на одном элементе, но вы обновляете этот элемент, а другой - в обработчике масштабирования, который изменит положение мыши. Возможно, стоит группировать элементы в элементе 'g' и применять к нему обработчик масштабирования. Если вы можете разместить код где-то, мы сможем более внимательно посмотреть. –