AdSense

網頁

2026/1/13

Java Google Map Platform Routes API computeRouteMatrix簡單範例

Java程式呼叫Google Map Platform Routes APIcomputeRouteMatrix簡單範例


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);

    }

}

github



測試

執行印出以下,注意回傳結果是個JSON陣列:

Response Body: [{
  "originIndex": 0,
  "destinationIndex": 0,
  "status": {},
  "distanceMeters": 40618,
  "duration": "2680s",
  "condition": "ROUTE_EXISTS"
}
]

沒有留言:

AdSense