用D3渲染ie8上的地图

时间:2014-07-07 21:14:43

标签: d3.js internet-explorer-8 raphael

我知道D3不支持IE8,但我希望能找到适合自己的东西。

我正在尝试使用R2D3 https://github.com/mhemesath/r2d3,但我正在创建的地图仍然无法渲染。随着r2d2加载到页面的头部,我有:

projection = d3.geo.albersUsa()
  .scale(700)
  .translate([1000*0.3, 400*0.4])

path = d3.geo.path()

mapData = topojson.features(mapJSON, mapJSON.objects.states)

d3.select('svg')
  .append('path')
  .attr('class', 'states')
  .datum(mapData)
  .attr('d', path.projection(projection))

这样可以很好地处理铬,但是在ie8中,这并不令人惊讶。

使用r2d3渲染

<svg width="675" height="290">
    <path class="states" __data__='[object object]' d="
</svg>

所以看起来path.projection(projection)的回调实际上并没有被执行或者没有返回任何内容。从而制动html。

此外,我认为r2d3会降级为ie8中的非svg元素。

任何人都有在ie8中呈现d3地图的经验吗?

我见过Making d3.js compatible with IE8/IE9https://github.com/mbostock/d3/issues/619和其他许多人。

1 个答案:

答案 0 :(得分:0)

IE8不支持仅以IE9开头的svg。我既不知道D3也不知道r2d3,但我能为你做的是建议使用http://raphaeljs.com/

它是一个非常棒的JS库,可满足各种需求,并通过浏览器检测以IE8 VML而不是SVG呈现。

如果您在使用RaphaelJS时需要任何帮助,请对此答案发表评论,并提供有关您的地图数据以及您想要使用它的内容的更多信息。

最诚挚的问候。