放大世界地图上的D3弹出窗口大小
D3 popups size on a Zoom in World Map
在我的D3世界地图上,我有一个名为"main"的父svg:g组,它有两个svg:g元素,一个用于国家,另一个用于弹出窗口。
我在svg:g元素"countries"下绘制了countries路径。在名为"popups"的svg:g下,我使用d3force布局绘制popups节点,该布局将多个callout显示为矩形。
点击任何国家/地区都会将该国家/地区缩放到屏幕大小。放大到边界框,Mike bostok。如果我在svg:g"国家"上应用缩放,因为我不希望弹出窗口缩放,因为它们会变得特别大。
由于较小国家的边界框将具有较大的规模,而较大国家的边界值将较小。
现在,我应该如何计算Svg:g"弹出窗口"的平移和缩放,以便弹出窗口的矩形大小和字体保持不变。
它使用了一个公式,就像一个符咒:[应用缩放后的位置]*(1-scalePopup)。有关如何计算变量scalePopup ,请参阅以下内容
var bounds = path.bounds(d),
dx = bounds[1][0] - bounds[0][0],
dy = bounds[1][1] - bounds[0][1],
x = (bounds[0][0] + bounds[1][0]) / 2,
y = (bounds[0][1] + bounds[1][1]) / 2;
var scale = countryZoomScale(Math.max(dx, dy)) / Math.max(dx / width, dy / height),
translate = [width / 1.5 - scale * x, height / 2 - scale * y];
var scalePopup = map.zoomFactor / scale;
var popupLayer = d3.select('.popupLayer');
var centroid = path.centroid(d);
popupLayer.attr("transform", "translate(" + centroid[0] * (1 - scalePopup) + "," + centroid[1] * (1 - scalePopup) + ")scale(" + scalePopup + ")");
相关文章:
- 窗口大小html css
- Chrome应用程序调整窗口大小保持纵横比
- Adobe Air SDK在页面加载时调整窗口大小
- 窗口大小调整事件在ie7中持续触发
- 使用jQuery可以根据窗口大小更改滑块的css高度
- 引导:响应式设计-当窗口大小从980px调整到979px时执行JS
- 基于浏览器窗口大小的条件 JavaScript 执行
- tinyMCE 4.1.9 和小窗口大小冻结
- 根据窗口大小调整 HTML 中 SVG 图像的大小
- 单击按钮并将其下载为图像格式时,如何使用引导模式弹出窗口显示D3图表
- 在浏览器窗口大小调整时更改 JS 逻辑
- 提示不同的Javascript/JQuery在窗口大小调整为低于/高于设置宽度时显示
- Javascript滚动并调整窗口大小
- 画布粒子-在“窗口大小”上更新画布大小
- 基于媒体查询的angular js动画无法调整窗口大小
- Javascript-window.open()弹出窗口大小问题
- Jquery通过媒体查询切换窗口大小的错误
- 放大世界地图上的D3弹出窗口大小
- 2dimple.js/d3.js在窗口大小更改时自动调整图表大小
- 当窗口大小调整时,D3缩放行为