一点背景。我有一个水系统的geojson,用户可以通过输入他们的地址进行搜索。 (地址搜索返回地址的gps坐标,我使用d3.geoContains返回关联的系统)。
我从master geojson返回系统后,然后使用返回的数据填充一些文本字段(这是有效的)。我还想在预渲染的地图上绘制系统边界(这不起作用)。
我确定我犯了一些基本的错误,但我一直在考虑这个问题太长时间以便我弄明白。
相关代码如下所示:
d3.json("/PublicWaterSupply2018_04.geojson").then(function(data) {
console.log(data)
data.features.forEach(function(d) {
console.log('running check');
if ( d3.geoContains(d, place) == true ) { console.log(d.properties.NAME)
console.log(d) // DOES return geometry and properties of filtered system.
console.log('drawing stuff')
// this is the bit that does not work (note the circle is there to test the data bind)
legend.selectAll("blebs")
.data(d)
.enter()
.append("path")
.attr("d", path)
.attr("fill", "red");
legend.selectAll("bleb")
.data(d)
.enter()
.append("circle")
.attr('cx', 150)
.attr('cy', 150)
.attr('r', 5)
.attr("fill", "blue");
//everything past here works:
legend
.append("circle")
.attr('cx', 150)
.attr('cy', 150)
.attr('r', 10)
.attr("fill", "black");
d3.select("#system").text(d.properties.NAME);
d3.select("#type").text(d.properties.OWNERSHIP);
d3.select("#county").text(d.properties.CNTY_NAME);
d3.select("#link").text(d.properties.PWS_ID );
};
});
});