rapidjson::Document document;
rapidjson::Document::AllocatorType& allocator = document.GetAllocator();
- rapidjson::Value& costing = document.AddMember(rapidjson::Value("costing", allocator).Move(),
- rapidjson::Value(rapidjson::kStringType).Move(), allocator);
+ rapidjson::Value directions_options(rapidjson::kObjectType);
+ rapidjson::Value costing(rapidjson::kStringType);
+ rapidjson::Value locations(rapidjson::kArrayType);
+ rapidjson::Value location(rapidjson::kObjectType);
+ rapidjson::Value startloc(rapidjson::kObjectType);
+ rapidjson::Value endloc(rapidjson::kObjectType);
+ rapidjson::Value costing_options(rapidjson::kObjectType);
+
switch (type) {
case COSTING_AUTO:
costing.SetString("auto");
costing.SetString("auto");
}
- rapidjson::Value& locations = document.AddMember(rapidjson::Value("locations", allocator).Move(),
- rapidjson::Value(rapidjson::kArrayType).Move(), allocator);
- rapidjson::Value& location = locations.AddMember(rapidjson::Value("", allocator).Move(),
- rapidjson::Value(rapidjson::kObjectType).Move(), allocator);
+ document.AddMember("costing", costing, allocator);
+ MAP_DEBUG("**********SET COSTING: %f", costing.GetString());
+
+ directions_options.AddMember("unit","mi",allocator);
+ document.AddMember("directions_options", directions_options, allocator);
+ MAP_DEBUG("**********SET DIRECTIONS_OPTIONS: %s", directions_options.GetString());
int length = g_list_length(waypoints);
if (length != 0) {
waypoints_list = g_list_first(waypoints);
while (waypoints_list) {
coords_s *data = (coords_s *) waypoints_list->data;
+ MAP_DEBUG("**********IN WAYPOINT LIST******************");
+ location.SetObject();
for (unsigned i = 0; i < sizeof(data); i++) {
location.AddMember<double>("lat", data[i].latitude, allocator);
location.AddMember<double>("lon", data[i].longitude, allocator);
waypoints_list = g_list_next(waypoints_list);
index++;
}
+ locations.PushBack(location, allocator);
+ document.AddMember("locations", locations, allocator);
} else {
- location.AddMember<double>("lat", startPoint.latitude, allocator);
- location.AddMember<double>("lon", startPoint.longitude, allocator);
- location.AddMember<double>("lat", endPoint.latitude, allocator);
- location.AddMember<double>("lon", endPoint.longitude, allocator);
+ startloc.SetObject();
+ startloc.AddMember<double>("lat", startPoint.latitude, allocator);
+ startloc.AddMember<double>("lon", startPoint.longitude, allocator);
+ endloc.SetObject();
+ endloc.AddMember<double>("lat", endPoint.latitude, allocator);
+ endloc.AddMember<double>("lon", endPoint.longitude, allocator);
+
+ locations.PushBack(startloc, allocator);
+ locations.PushBack(endloc, allocator);
+ document.AddMember("locations", locations, allocator);
}
- rapidjson::Value& directions_options = document.AddMember(rapidjson::Value("directions_options", allocator).Move(),
- rapidjson::Value(rapidjson::kObjectType).Move(), allocator);
- directions_options.AddMember("unit","mi",allocator);
-
if (avoids) {
- rapidjson::Value& costing_options = document.AddMember(rapidjson::Value("costing_options", allocator).Move(),
- rapidjson::Value(rapidjson::kObjectType).Move(), allocator);
-
switch (avoids) {
case PENALTY_NONE:
//TODO
costing_options.AddMember("country_crossing_penalty","1", allocator);
break;
}
+ document.AddMember("costing_options", costing_options, allocator);
+ MAP_DEBUG("**********SET COSTING_OPTIONS: %f", costing_options.GetString());
+
}
- /*rapidjson::Value& drive_style = document.AddMember(rapidjson::Value("drive_style", allocator).Move(),
- * rapidjson::Value(rapidjson::kStringType).Move(), allocator);
+ /*rapidjson::Value& drive_style;
switch (style) {
case DRIVING_STYLE_NORMAL:
//TODO
case DRIVING_STYLE_AGGRESSIVE:
//TODO
break;
- }*/
+ }
+ document.AddMember("driving_style", driving_style, allocator);*/
//Stringify JSON
rapidjson::StringBuffer buffer;
rapidjson::Writer<rapidjson::StringBuffer> writer(buffer);
document.Accept(writer);
- const char* json = buffer.GetString();
+ const char* jsonString = buffer.GetString();
//we think that this is already being encoded somewhere else
//std::string encoded_json = url_encode(json);
char routeRequest[1024];
if (maps_key != NULL)
- snprintf(routeRequest, sizeof(routeRequest), ROUTE_URL, maps_key, json);
+ snprintf(routeRequest, sizeof(routeRequest), ROUTE_URL, maps_key, jsonString);
else
- snprintf(routeRequest, sizeof(routeRequest), ROUTE_URL, "null", json);
+ snprintf(routeRequest, sizeof(routeRequest), ROUTE_URL, "null", jsonString);
add_handle(routeRequest, REQ_TYPE_ROUTE, user_data);
return 0;