我有以下代码使用 D3.js 加载 json 数据:
this.clickCountry = function(d) {
"use strict"
var time_for_remove = 500,
time_for_zoom = 900
d3.selectAll("svg g").transition().delay(time_for_remove + time_for_zoom - 200).remove()
self.svg.append("g")
.attr("id", "country")
self.regionsGroup = self.svg.select("#country")
var adm1_key = d.id+"_adm1"
try {
var adm1_path = "../topo/"+d.id+"_adm1.json"
} catch (e) {
console.log(e) // "MyError"
}
var adm1_path = "../topo/"+d.id+"_adm1.json"
d3.json(adm1_path, function(error, topology) {
var regions = topology.objects
for(var adm1_key in regions) {
var o = regions[adm1_key]
}
self.regionsGroup.selectAll("path")
.data(topojson.object(topology, o).geometries)
.enter().append("path")
.attr("d", self.projection)
.attr("id", function(d) {
return d.properties.name
})
.classed("country", true)
.attr("class", "country")
.on("mouseover", function(d) {
d3.select(this)
.style("fill", "#6C0")
.append("svg:title")
.text(d.properties.name)
})
.on("mouseout", function(d) {
d3.select(this)
.style("fill", "#000000")
})
.on("click", function(d) {
console.log('clicked on country')
var p = d3.mouse(this)
console.log(p+" "+self.map.invert(p))
self.map.center(self.map.invert(p))
})
})
}
adm1_path = "../topo/"+d.id+"_adm1.json"
在实际绘制地图之前检查文件是否存在的正确方法是什么?