Java程式呼叫Google Map Platform Routes API的computeRouteMatrix簡單範例
Routes API的computeRouteMatrix方法可獲取地圖上多個地點的起訖路徑資訊。
事前要求
需要有Google Cloud Platform(GCP)帳號,並啟用Routes API,取得API金鑰(API key)。
參考「Java Google Map Platform Routes API簡單範例」。
範例
下面範例呼叫Routes API的computeRouteMatrix方法,呼叫POST https://routes.googleapis.com/distanceMatrix/v2:computeRouteMatrix。
在請求頭設定以下。
X-Goog-Api-Key- 為API金鑰X-Goog-FieldMask- 為回傳欄位遮罩,用來指示要回應那些欄位。
package com.abc.demo;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.List;
import java.util.Map;
import com.fasterxml.jackson.databind.ObjectMapper;
public class MyApp {
public static void main(String[] args) throws Exception {
String apiKey = "API_KEY";
String requestBody = new ObjectMapper().writeValueAsString(Map.of(
"origins", List.of(
Map.of("waypoint",
Map.of("address", "桃園市桃園區大同路100號"))),
"destinations", List.of(
Map.of("waypoint",
Map.of("address", "台北市內湖區瑞光路515號"))),
"travelMode", "DRIVE"));
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://routes.googleapis.com/distanceMatrix/v2:computeRouteMatrix"))
.header("Content-Type", "application/json")
.header("X-Goog-Api-Key", apiKey)
.header("X-Goog-FieldMask", String.join(",",
"status",
"condition",
"distanceMeters",
"duration",
"originIndex",
"destinationIndex"
))
.POST(HttpRequest.BodyPublishers.ofString(requestBody))
.build();
HttpClient client = HttpClient.newHttpClient();
HttpResponse<String> response;
response = client.send(request, HttpResponse.BodyHandlers.ofString());
String responseBody = response.body();
System.out.println("Response Body: " + responseBody);
}
}
測試
執行印出以下,注意回傳結果是個JSON陣列:
Response Body: [{
"originIndex": 0,
"destinationIndex": 0,
"status": {},
"distanceMeters": 40618,
"duration": "2680s",
"condition": "ROUTE_EXISTS"
}
]
沒有留言:
張貼留言