Javascript d3.js地图不在Internet Explorer或Firefox上渲染,仅在Chrome上渲染
路径元素d属性就是问题所在。在Internet Explorer中查看控制台时,它明确提到 SVG4601:SVG路径数据的格式不正确,无法保存 完全解析 它似乎不是我正在使用的geojson,因为它在以下情况下工作: 以下是检查每个浏览器上的dom元素时的输出 铬: Internet Explorer: 火狐: 这就是我生成路径的方式:Javascript d3.js地图不在Internet Explorer或Firefox上渲染,仅在Chrome上渲染,javascript,html,svg,d3.js,geojson,Javascript,Html,Svg,D3.js,Geojson,路径元素d属性就是问题所在。在Internet Explorer中查看控制台时,它明确提到 SVG4601:SVG路径数据的格式不正确,无法保存 完全解析 它似乎不是我正在使用的geojson,因为它在以下情况下工作: 以下是检查每个浏览器上的dom元素时的输出 铬: Internet Explorer: 火狐: 这就是我生成路径的方式: function initialSetup() { internalScope.svg.selectAll("path").transiti
function initialSetup() {
internalScope.svg.selectAll("path").transition().duration(500).style("opacity", 0).remove();
internalScope.width = width = internalScope.svg[0][0].offsetWidth;
internalScope.height = height = 800;
projection = d3.geo.albers()
.rotate(4.4, 0)
.parallels([50, 60])
.scale(1)
.translate([0, 0]);
path = d3.geo.path()
.projection(projection); // default path based on our projection
internalScope.svg.attr("height", "100%")
.attr("viewBox", "0 0 " + width + " " + height)
.attr("preserveAspectRatio", "xMidYMid meet"); // prevent default height messing up svg
// Append an outer rectangle so when it's clicked it will also reset back to all features view
internalScope.svg.append("rect")
.attr("class", "background")
.attr("width", "100%")
.attr("height", "100%")
.on("click", function () {
//TODO clicking the empty space could potentially do some sort of reset on everything ?
})
;
var groupofSvgElements = internalScope.svg.append("g");
return groupofSvgElements;
}
我将“groupOfSvgElements”传递给另一个方法
我用来生成d3.js映射的提取代码(在Angularjs指令中)
我的json文件——我真的不知道如何将它添加到小提琴或在这里共享它。
SVG4601:SVG路径数据的格式不正确,无法完全解析
出现以下错误的原因可能有很多,在我的例子中,是宽度如何传递给路径构造的。Chrome似乎比InternetExplorer更为宽大
调试这个问题的最佳方法(正如Ethan Jewett在上面的评论中所建议的)是在我上传到myjson.com的JSFIDLE中使用相同的geojson。使用它的代码片段
d3.json("https://api.myjson.com/bins/4wkia", function (error, json) {
我认为出现这个问题的唯一原因是SVG在浏览器之间并没有得到应有的规范。至于导致问题的原因,也没有太多错误信息。宽度对于路径生成无效,没有错误。唯一的调试方法是将我自己的代码一点一点地添加到JSFIDLE中。最终JSFIDLE:IE和FF上的路径计算出错。你能分享你的代码,特别是填充“d”属性的代码吗?你能至少礼貌地解释一下为什么对我的帖子-1的人来说?我问我的问题还不够努力吗?我看不出这个问题有什么问题,它看起来相当清晰和简洁,你能告诉我哪里出了问题吗?代码没有帮助,因为它没有显示如何计算
path
变量。我们需要理解为什么不同浏览器中的'd'属性填充方式不同。最好是创建一个JSFIDLE。(我怀疑缺乏一个有效的例子是投-1票的原因。)好消息,这不是geojson文件(yayy)-。。。坏消息是,我仍然不知道它是什么,并希望它是geojson文件中的某种格式。在Internet explorer中测试,它有效。@EthanJewett我误读了你的评论。我没有意识到如何计算路径很重要,等一下,让我从我的代码中得到它,并尝试将其添加到fiddle中。offsetWidth和clientWidth都来自CSSOM,它们确实不是很好的跨浏览器,但它们不是SVG。
d3.json("https://api.myjson.com/bins/4wkia", function (error, json) {