我想将用户给出的一些坐标与geojson文件中的坐标进行比较,如果条件结果为真,那么我想在坐标定义的位置上绘制一个小的圆形图像(真的很小像一个符号或东西)。我需要在d3.json方法中编写什么来访问geojson文件中的坐标,比较它并在其上绘制图像? 任何帮助将不胜感激。
这是我的geojson文件的一小部分
{
"type": "FeatureCollection",
"features": [
{ "type": "Feature", "properties": {}, "id":"Andhra Pradesh", "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 80.149167, 13.618300 ], [ 80.142031, 13.544708 ], [ 80.126421, 13.584849 ], [ 80.158087, 13.591093 ], [ 80.120622, 13.605812 ], [ 80.149167, 13.618300 ] ] ], [ [ [ 82.258801, 16.689980 ], [ 82.285562, 16.697563 ], [ 82.368074, 16.723877 ], [ 82.311876, 16.602562 ], [ 82.258801, 16.689980 ] ] ],
答案 0 :(得分:1)
我相信你需要另外一个数据集来满足你的需求。您geometry
集合中的这些坐标用于绘制路径。请参阅文档:
http://geojson.org/geojson-spec.html#geometry-objects
换句话说,那些只是" line"的坐标。你在地图上看到的(边界)。我相信你想比较里面每个州(路径)的位置坐标,比如城市或其他POI,这是正确的吗?
在这种情况下,您有两个选项:您可以根据用户给出的坐标轻松绘制圆圈或其他任何内容,或者如果这些坐标是城市,您可以搜索包含这些城市的地理数据的另一个JSON文件,并将用户的输入与这些坐标进行比较。
一旦你有了这些坐标(让我们称之为longitude
和latitude
),你就可以这样绘制它们:
svg.append("circle")
.attr("cx", function() {
return projection(longitude);
})
.attr("cy", function(d) {
return projection(latitude);
})
.attr("r", whatever)
.style("fill", whatever);
svg
是您用来附加SVG的变量,projection
是您用来设置投影的变量。