使用Datamaps插件渲染法国地图仅生成空SVG无法显示如何解决
问题原因
- 投影中心点坐标设置错误:你当前配置的
center([78.9629, 23.5937])是印度的经纬度,完全偏离法国的地理范围,导致法国地图被渲染到了SVG可视区域之外,所以看不到内容 - 缺少投影平移配置:d3.geo.mercator默认没有针对容器做居中平移,即使坐标正确也可能不在可视范围内
- 容器未设置宽高:你当前的
<div id="container">没有指定宽高样式,SVG会继承父容器尺寸,没有尺寸的情况下渲染内容不可见 - 潜在问题:如果datamaps.fra.min.js的文件路径错误,会导致法国拓扑数据加载失败,也无法渲染地图
解决方案
- 首先给容器添加宽高样式,在你的CSS中加入:
#container { width: 800px; height: 600px; }
- 修正
setProjection部分的配置,替换为法国的地理中心,同时添加平移配置:
setProjection: function (element) { // 获取容器宽高用于居中平移 var width = element.offsetWidth, height = element.offsetHeight; var projection = d3.geo.mercator() // 法国地理中心点经纬度 [经度, 纬度] .center([2.2137, 46.2276]) // 平移到容器中心 .translate([width / 2, height / 2]) // 调整缩放值到合适大小,可根据实际显示效果调整 .scale(3000); var path = d3.geo.path().projection(projection); return { path: path, projection: projection }; }
- 检查
datamaps.fra.min.js的文件路径,打开浏览器控制台的网络面板,确认该文件没有返回404错误,能正常加载。
修改后刷新页面即可正常渲染法国地图。
内容的提问来源于stack exchange,提问作者Meryem ACHEMLAL
相关产品推荐
相关产品推荐

