0

json 配列を正確にループして、位置の ID と d3 オブジェクトの ID を一致させる必要があります。

配列のスニペットは次のとおりです (Ruby on Rails が生成されます)。

{
    "name": "Test",
    "locations": [{
        "city_id": 1,
        "x": 0,
        "y": 0
        }, {
        "city_id": 2,
        "x": 0,
        "y": 0
        }, {
        "city_id": 3,
        "x": 0,
        "y": 0
        }, {
        "city_id": 118,
        "x": 0,
        "y": 0
        }, {
        "city_id": 117,
        "x": 0,
        "y": 0
        }, 
    ],
    "city": [{
        "id": 118,
        "name": "London"
        }, {
        "id": 117,
        "name": "New York"
        }, {
        "id": 1,
        "name": "Miami"
        }, {
        "id": 3,
        "name": "Duabi"
        }, {
        "id": 2,
        "name": "Hong Kong"
        }
    ]
}

x & yi の値を収集するには、ドラッグ & ドロップ機能があります。オブジェクトをドロップすると、ポストを送信して x と y の値の位置を更新します。ただし、ループが十分に具体的ではないため、正しいIDで更新を送信します。

だから今、私は都市の場所を収集し、それらをd3オブジェクト/都市と一致させる方法を見つけなければなりません.だから私はこのようにループしました:

   .attr("transform", function(d,i) {return "translate("+json.locations[i].x+","+json.locations[i].y+")" ;})

しかし、これは何も一致せずに配列を通過するだけです。したがって、基本的にループを通過して、IDが相関しているかどうかを確認し、その場所を関連するd3オブジェクトに割り当てたいと思います。そのため、city id: 118 がドラッグ アンド ドロップされた場合、場所 city_id:188 は、問題である city_id:1 ではなく更新されます。

これは可能ですか?

前もって感謝します

4

1 に答える 1

0

このようなことを意味しますか?

//i don't know where is it from
given_id = 118;

for(i=0;i<json.locations.length;i++) {
    var id = json.locations[i].city_id;
    if(id==given_id) {
        var x = json.locations[i].x;
        var y = json.locations[i].y;
        console.log(x+","+y);
        //do something with x and y
    }
}

http://jsfiddle.net/LyQZ6/

于 2013-06-26T19:54:31.437 に答える