ええと、私は既存のソリューションに満足していませんでした(単純なjsonを使用すると、オーバーヘッドが大きくなるか、遅すぎるかのどちらかです)。したがって、ここでは、レコードについて、「arraybuffer」を介したhtml5ソリューション
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'arraybuffer';
xhr.onload = function(e) {
if (this.status == 200) {
var dv = new DataView(this.response);
var json = {
"info" : {
"took" : 0
},
"route": {
"time": 0,
"distance": 0,
"data" : {}
}
};
var i = 0;
json.info.took = dv.getFloat32(i);
i += 4;
json.route.distance = dv.getFloat32(i);
i += 4;
json.route.time = dv.getInt32(i);
i += 4;
var locations = dv.getInt32(i);
var tmpArray = [];
json.route.data = {
"type" : "LineString",
"coordinates": tmpArray
};
for(var index = 0; index < locations; index ++) {
i += 4;
var lat = dv.getFloat32(i);
i += 4;
var lng = dv.getFloat32(i);
tmpArray.push([lng, lat]);
}
callback(json);
} else
errCallback(e);
};
xhr.send();
これをクロスオリジンポリシーで機能させるには、サーバー(response.setHeader( "Access-Control-Allow-Origin"、 "*"))とクライアント(jQuery.support.cors = true)で有効にする必要があります。 。ここでは、DataOutputStreamを使用した単純なJavaサーブレットを使用した完全な動作例を示します。別の方法として、jsonフォールバックがあります。
別のアプローチは、すべての数値を文字列にエンコードし、これを(base64経由で)jsonに入れることです。
私が困惑したもう1つの興味深いプロジェクトは、 http: //binaryjs.comでした。