in Source/Requests/DistanceMatrixRequest.cs [356:454]
public string GetPostRequestBody()
{
if(TravelMode == TravelModeType.Truck)
{
return string.Empty;
}
//Build the JSON object using string builder as faster than JSON serializer.
var sb = new StringBuilder();
sb.Append("{\"origins\":[");
foreach (var o in Origins)
{
sb.AppendFormat(CultureInfo.InvariantCulture, "{{\"latitude\":{0:0.#####},\"longitude\":{1:0.#####}}},", o.Latitude, o.Longitude);
}
//Remove trailing comma.
sb.Length--;
sb.Append("]");
if (Destinations != null && Destinations.Count > 0)
{
sb.Append(",\"destinations\":[");
foreach (var d in Destinations)
{
sb.AppendFormat(CultureInfo.InvariantCulture, "{{\"latitude\":{0:0.#####},\"longitude\":{1:0.#####}}},", d.Latitude, d.Longitude);
}
//Remove trailing comma.
sb.Length--;
sb.Append("]");
}
string mode;
switch (TravelMode)
{
case TravelModeType.Transit:
mode = "transit";
break;
case TravelModeType.Walking:
mode = "walking";
break;
case TravelModeType.Driving:
default:
mode = "driving";
break;
}
sb.AppendFormat(",\"travelMode\":\"{0}\"", mode);
if (StartTime.HasValue)
{
sb.AppendFormat(DateTimeFormatInfo.InvariantInfo, ",\"startTime\":\"{0:O}\"", StartTime.Value);
if (EndTime.HasValue)
{
sb.AppendFormat(DateTimeFormatInfo.InvariantInfo, ",\"endTime\":\"{0:O}\"", EndTime.Value);
sb.AppendFormat(",\"resolution\":{0}", Resolution);
}
}
string tu;
switch (TimeUnits)
{
case TimeUnitType.Minute:
tu = "minute";
break;
case TimeUnitType.Second:
default:
tu = "second";
break;
}
sb.AppendFormat(",\"timeUnit\":\"{0}\"", tu);
string du;
switch (DistanceUnits)
{
case DistanceUnitType.Miles:
du = "mile";
break;
case DistanceUnitType.Kilometers:
default:
du = "kilometer";
break;
}
sb.AppendFormat(",\"distanceUnit\":\"{0}\"}}", du);
return sb.ToString();
}