Tính toán thông tin tóm tắt về định tuyến

Cách sử dụng tính năng Tìm kiếm bằng văn bản (Mới) hoặc Tìm kiếm lân cận (Mới) để tính thời gian di chuyển và khoảng cách đến từng địa điểm trong câu trả lời:

  1. Truyền tham số routingParameters.origin trong yêu cầu để chỉ định tọa độ vĩ độ và kinh độ của điểm xuất phát định tuyến. Tham số này là bắt buộc để tính toán thời lượng và khoảng cách đến từng địa điểm trong phản hồi.

  2. Thêm routingSummaries vào mặt nạ trường để phản hồi bao gồm cả mảng routingSummaries. Mảng này chứa thời lượng và khoảng cách từ điểm xuất phát định tuyến đến từng địa điểm trong phản hồi.

Trình khám phá API cho phép bạn tạo các yêu cầu trực tiếp để làm quen với API và các tuỳ chọn API:

Hãy làm thử!

Sử dụng tính năng Tìm kiếm bằng văn bản (Mới)

Trong yêu cầu sau, bạn tính thời gian di chuyển và khoảng cách đến từng địa điểm trong phản hồi Tìm kiếm bằng văn bản (Mới):

curl -X POST -d '{
  "textQuery" : "Spicy Vegetarian Food in Sydney, Australia",
  "routingParameters": {
    "origin": {
      "latitude": -33.8688,
      "longitude": 151.1957362
    }
  }
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: API_KEY' \
-H 'X-Goog-FieldMask: places.displayName,places.formattedAddress,places.priceLevel,routingSummaries' \
'https://places.googleapis.com/v1/places:searchText'

Phản hồi chứa hai mảng JSON: mảng places chứa các địa điểm trùng khớp và mảng routingSummaries chứa thời lượng và khoảng cách di chuyển đến từng địa điểm:

{
  "places": [
    {
      object (Place)
    }
  ]
  "routingSummaries": [
    {
      object (RoutingSummary)
    }
}

Mỗi phần tử trong mảng routingSummaries nằm ở vị trí mảng tương ứng như vị trí trong mảng places. Tức là phần tử tại routingSummaries[0] tương ứng với vị trí tại places[0].

Độ dài mảng của routingSummaries giống với độ dài mảng của places. Trong trường hợp không có routingSummary cho một địa điểm, mục nhập mảng sẽ trống.

Vì ví dụ này tính toán thời lượng và khoảng cách từ điểm xuất phát định tuyến đến từng địa điểm, nên trường routingSummaries.legs trong phản hồi chứa một đối tượng Leg chứa durationdistanceMeters từ điểm xuất phát định tuyến đến địa điểm.

{
  "places": [
    {
      "formattedAddress": "1, Westfield Sydney Central Plaza, 450 George St, Sydney NSW 2000, Australia",
      "displayName": {
        "text": "Gözleme King Sydney",
        "languageCode": "en"
      }
    },
    {
      "formattedAddress": "367 Pitt St, Sydney NSW 2000, Australia",
      "priceLevel": "PRICE_LEVEL_MODERATE",
      "displayName": {
        "text": "Mother Chu's Vegetarian Kitchen",
        "languageCode": "en"
      }
    },
    
  ]
  "routingSummaries": [
    {
      "legs": [
        {
          "duration": "597s",
          "distanceMeters": 2607
        }
      ],
      "directionsUri": "https://www.google.com/maps/dir/-33.8688,151.1957362/''/data=!4m6!4m5!1m0!1m2!1m1!1s0x6b12ae3fa97cd745:0x6aecf365bf497c08!3e0"
    },
    {
      "legs": [
        {
          "duration": "562s",
          "distanceMeters": 2345
        }
      ],
      "directionsUri": "https://www.google.com/maps/dir/-33.8688,151.1957362/''/data=!4m6!4m5!1m0!1m2!1m1!1s0x6b12ae3da97f60c1:0x845f3273bd764f6c!3e0"
    },
   
  ]
}

Từ ví dụ này, bạn có thể thấy rằng thời lượng và khoảng cách từ điểm xuất phát định tuyến đến vị trí đầu tiên trong kết quả là 597 giây và 2607 mét.

Trong ví dụ này, bạn sẽ tính thời gian di chuyển và khoảng cách đến từng địa điểm trong phản hồi Tìm kiếm lân cận. Ví dụ này tìm kiếm nhà hàng ở Sydney, Australia và đặt giới hạn vị trí cũng như điểm xuất phát định tuyến thành cùng một toạ độ vĩ độ và kinh độ:

  curl -X POST -d '{
    "includedTypes": ["restaurant"],
    "maxResultCount": 10,
    "locationRestriction": {
      "circle": {
        "center": {
          "latitude": -33.8688,
          "longitude": 151.1957362},
        "radius": 500.0
      }
    },
    "routingParameters": {
      "origin": {
        "latitude": -33.8688,
        "longitude": 151.1957362
      }
    }
  }' \
  -H 'Content-Type: application/json' -H "X-Goog-Api-Key:API_KEY" \
  -H "X-Goog-FieldMask: places.displayName,routingSummaries" \
  https://places.googleapis.com/v1/places:searchNearby

Bạn không nhất thiết phải sử dụng cùng một toạ độ cho locationRestriction và nguồn định tuyến. Ví dụ: bạn đặt locationRestriction thành tâm của Sydney để thiên lệch kết quả tìm kiếm về vòng tròn đó. Tuy nhiên, sau đó, bạn sẽ đặt nguồn định tuyến thành toạ độ của nhà bạn, nghĩa là một vị trí khác trong vòng tròn tìm kiếm. Sau đó, yêu cầu này sẽ thiên vị kết quả tìm kiếm cho vòng tròn và tính toán bản tóm tắt định tuyến dựa trên vị trí của nhà bạn.

Chỉ định các lựa chọn đi lại

Theo mặc định, thời gian và quãng đường được tính cho ô tô. Tuy nhiên, bạn có thể kiểm soát loại xe cũng như các lựa chọn khác trong kết quả tìm kiếm.

  • Sử dụng tham số routingParameters.travelMode để đặt phương thức di chuyển thành DRIVE, BICYCLE, WALK hoặc TWO_WHEELER. Để biết thêm thông tin về các tuỳ chọn này, hãy xem phần Các loại xe hiện có cho tuyến đường.

  • Sử dụng thuộc tính routingParameters.routingPreference để đặt tuỳ chọn ưu tiên định tuyến thành TRAFFIC_UNAWARE (mặc định), TRAFFIC_AWARE hoặc TRAFFIC_AWARE_OPTIMAL. Mỗi tuỳ chọn có các mức chất lượng dữ liệu và độ trễ khác nhau. Để biết thêm thông tin, hãy xem phần Chỉ định cách và liệu có nên đưa dữ liệu lưu lượng truy cập vào hay không.

    Thuộc tính routingParameters.routingPreference ảnh hưởng đến các chỉ dẫn có trong trường directionsUri Xem trước (Trước khi phát hành công khai) vì Google Maps hiển thị các lựa chọn về tình trạng giao thông khi mở đường liên kết.

  • Sử dụng thuộc tính routingParameters.routeModifiers để chỉ định cho avoidTolls, avoidHighways, avoidFerriesavoidIndoor. Để biết thêm thông tin về các tuỳ chọn này, hãy xem phần Chỉ định các đặc điểm tuyến đường cần tránh.

Trong ví dụ tiếp theo, bạn chỉ định chế độ đi lại là DRIVE và tránh xa đường cao tốc:

curl -X POST -d '{
  "textQuery" : "Spicy Vegetarian Food in Sydney, Australia",
  "routingParameters": {
    "origin": {
      "latitude": -33.8688,
      "longitude": 151.1957362
    },
    "travelMode":"DRIVE",
    "routeModifiers": {
      "avoidHighways": true
    }
  }
}' \
-H 'Content-Type: application/json' -H 'X-Goog-Api-Key: API_KEY' \
-H 'X-Goog-FieldMask: places.displayName,places.formattedAddress,places.priceLevel,routingSummaries' \
'https://places.googleapis.com/v1/places:searchText'