59 cJSON * feature = cJSON_CreateObject();
60 cJSON_AddItemToObject(feature,
"type", cJSON_CreateString(
"Feature"));
62 cJSON * lineString = cJSON_CreateObject();
63 cJSON_AddItemToObject(feature,
"geometry", lineString );
65 cJSON * properties = cJSON_CreateObject();
66 cJSON_AddItemToObject(feature,
"properties", properties );
67 cJSON_AddItemToObject(properties,
"type", cJSON_CreateString(
"FlightHistory"));
68 cJSON_AddItemToObject(properties,
"last", cJSON_CreateNumber(last_seen));
70 cJSON_AddItemToObject(lineString,
"type", cJSON_CreateString(
"LineString"));
71 cJSON * coordinates = cJSON_CreateArray();
72 cJSON_AddItemToObject(lineString,
"coordinates", coordinates);
73 for (SGGeodVec::const_iterator it = history.begin(); it != history.end();
75 cJSON * coordinate = cJSON_CreateArray();
76 cJSON_AddItemToArray(coordinates, coordinate);
78 cJSON_AddItemToArray(coordinate, cJSON_CreateNumber(it->getLongitudeDeg()));
79 cJSON_AddItemToArray(coordinate, cJSON_CreateNumber(it->getLatitudeDeg()));
80 cJSON_AddItemToArray(coordinate, cJSON_CreateNumber(it->getElevationM()));
84 char * jsonString = cJSON_PrintUnformatted(feature);
85 string reply(jsonString);
87 cJSON_Delete(lineString);
213 response.
Header[
"Access-Control-Allow-Origin"] =
"*";
214 response.
Header[
"Access-Control-Allow-Methods"] =
"OPTIONS, GET, POST";
215 response.
Header[
"Access-Control-Allow-Headers"] =
216 "Origin, Accept, Content-Type, X-Requested-With, X-CSRF-Token";
218 if (request.
Method ==
"OPTIONS") {
224 double minEdgeLengthM = 50;
225 string requestPath = request.
Uri.substr(
getUri().length());
227 if (request.
Method ==
"GET") {
228 }
else if (request.
Method ==
"POST") {
237 cJSON * json = cJSON_Parse(request.
Content.c_str());
241 bool doReinit =
false;
243 fgSetDouble(
"/sim/history/sample-interval-sec", d);
247 fgSetDouble(
"/sim/history/max-memory-use-bytes", d);
252 fgSetBool(
"/sim/history/clear-on-takeoff", b);
270 SG_LOG(SG_NETWORK, SG_INFO,
271 "PkgUriHandler: invalid request method '" << request.
Method <<
"'");
272 response.
Header[
"Allow"] =
"OPTIONS, GET, POST";
278 if (requestPath ==
"track.kml") {
279 response.
Header[
"Content-Type"] =
280 "application/vnd.google-earth.kml+xml; charset=UTF-8";
283 history->pathForHistory(minEdgeLengthM), request);
285 }
else if (requestPath ==
"track.json") {
299 response.
Header[
"Content-Type"] =
"application/json; charset=UTF-8";
304 response.
Header[
"Content-Type"] =
"text/html";