我已经重做了这种方法,但仍然没有使用它。这次我有一个非常简短的工作示例,并完美地说明了问题:
https://developer.android.com/google/play/billing/billing_promotions.html#workflow
在上面的区块中,您将看到县的地图。此外,我有纬度和经度的用户输入,如下所示:
var lat = d3.select('#lat_input').node();
var long = d3.select('#long_input').node();
这些坐标可以在美国境内的任何地方。我想要做的是创建一个查询用户输入坐标的函数,并返回该县的FIPS ID。
var containing_county = us.objects.counties.geometries.filter(function(polygon) {
return d3.polygonContains(polygon, [long.value, lat.value]);
});
console.log(containing_county)
});
然而,它没有按照我期望的方式过滤,它说不能读取undefined的属性0。
这里应该做些什么?
也尝试过:
var containing_county = topojson.feature(us, us.objects.counties).features.filter(function(d) {
return d3.polygonContains(d.geometry, [long.value, lat.value]);
});
答案 0 :(得分:1)
我检查了您链接的数据
objects.counties.geometries的元素0不是'Polygon'类型,而是'MultiPolygon'。
d3.polygonContains的第一个参数需要一个多边形,并且不能处理多个多边形。可能你应该在不同的几何上使用不同的方法。