WebサーバーからJSONオブジェクトを取得するのに役立つajaxリクエストがあります。three.jsのJSONオブジェクトに基づいてメッシュを作成する方法
function _loadModel(filename) {
var request = new XMLHttpRequest();
request.open("GET", filename);//open(method, url, async)
request.onreadystatechange = function() {
console.info(request.readyState +' - '+request.status);
if (request.readyState == 4) {//4 == finished download
if(request.status == 200) { //OK -> bezogen auf http Spezifikation
handleLoadedGeometry(filename,JSON.parse(request.responseText));
}
else if (document.domain.length == 0 && request.status == 0){ //OK but local, no web server
handleLoadedGeometry(filename,JSON.parse(request.responseText));
}
else{
alert ('There was a problem loading the file :' + filename);
alert ('HTML error code: ' + request.status);
}
}
}
request.send();// send request to the server (used for GET)
}
_loadModel('http://localhost:8080/bbox?XMIN=3500060&YMIN=5392691&XMAX=3500277&YMAX=5393413')
JSONファイル:
[{"building_nr": 5, "geometry": "{\"type\":\"Polygon\",\"coordinates\":[[[3500267.16,5392933.95,456.904],[3500259.19,5392933.01,456.904],[3500258.586,5392938.152,456.904],[3500258.02,5392942.97,456.904],[3500265.98,5392943.94,456.904],[3500266.552,5392939.097,456.904],[3500267.16,5392933.95,456.904]]]}", "polygon_typ": "BuildingGroundSurface"}, ...]
これは、1つのオブジェクトであり、私はこの配列にそれらの多くを持っています。
メッシュを作成します。 私はブラウザにこのエラーが出る終わり
//Callback funktion
function handleLoadedGeometry(filename, model) {
var geom = new THREE.BufferGeometry();
for (var i=0;i<10;i++)
{
var vertex = new THREE.Vector3();
vertex.x = model.geometry[i].coordinates[0];
vertex.y = model.geometry[i].coordinates[1];
vertex.z = model.geometry[i].coordinates[2];
geometry.vertices.push(vertex);
}
geom.addAttribute('position', new THREE.BufferAttribute(vertices, 3));
var material = new THREE.MeshBasicMaterial({ color: 0xff00f0 });
var mesh = new THREE.Mesh(geom, material);
Scene.scene.add(mesh);
}
)(これは、関数handleLoadedGeometry内で行うことができると思う:は、プロパティを読み取ることができません「0」未定義
のどのように私はを参照することができますJSON
の中のgeometry coordinates
?
コメントありがとうございます!しかし、今私は問題があります。model.geometryは私のケースでは大きな文字列です:geometry: "" {"type": "Polygon"、 "coordinates":[[[3500267.16,5392933.95,456.904]、[3500259.19,5392933.01、 456.904]、[3500258.586,5392938.152,456.904]、[3500258.02,5392942.97,456.904]、[3500265.98,5392943.94,456.904]、[3500266.552,5392939.097,456.904]、[3500267.16,5392933.95,456.904]]}}。 select model.geometry.ccordinatesこれは不明です。私はmodel.geometryを選択することしかできません。 – Moehre
それから別のJSON.parseを呼び出すか、jsonにエラーがあるかもしれません。 –