public static double GetDistance(string origin, string destination, string apiKey) {
double ret = 0;
WebResponse response = null;
try {
string url = @"https://maps.googleapis.com/maps/api/distancematrix/json?origins=" +
origin + "&destinations=" + destination + "&key=" + apiKey;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
response = request.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader sReader = new StreamReader(dataStream);
string jsonString = sReader.ReadToEnd();
Debug.Write(jsonString);
var jo = JObject.Parse(jsonString);
JToken jt = jo.SelectToken("$.rows..elements..distance.value");
ret = double.Parse(StringUtil.NullBlankToZero(jt.ToString()));
return ret;
} finally {
response.Close();
}
}
例えば「origin:東京」-「destination:大阪」を指定してリクエストを投げると、以下の形式のJSONが返されるので、
JSONPathを使って、距離の部分を抜き出して戻り値にセットしています。
●例)「東京」-「大阪」間でリクエストを投げた時のJSON取得結果
{
"destination_addresses" : [ "Osaka, Osaka Prefecture, Japan" ],
"origin_addresses" : [ "Tokyo, Japan" ],
"rows" : [
{
"elements" : [
{
"distance" : {
"text" : "513 km",
"value" : 512545
},
"duration" : {
"text" : "6 hours 16 mins",
"value" : 22563
},
"status" : "OK"
}
]
}
],
"status" : "OK"
}
0 件のコメント:
コメントを投稿