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

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

  1. Truyền tham số routingParameters.origin trong yêu cầu để chỉ định toạ độ vĩ độ và kinh độ của điểm xuất phát của tuyến đường. Bạn bắt buộc phải cung cấp tham số này để tính toán thời gian 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 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 của tuyến đường đến từng địa điểm trong phản hồi.

APIs Explorer cho phép bạn đưa ra các yêu cầu trực tiếp để có thể làm quen với API và các tuỳ chọn API:

Trong yêu cầu sau, bạn tính toán thời gian di chuyển và khoảng cách đến từng địa điểm trong phản hồi của tính năng Tìm kiếm 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 phù hợp và mảng routingSummaries chứa thời gian 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 với vị trí trong mảng places. Tức là phần tử tại routingSummaries[0] tương ứng với địa điểm 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 gian và khoảng cách từ điểm xuất phát của tuyến đường đế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 duy nhất chứa duration và distanceMeters từ điểm xuất phát của tuyến đường đế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"
    },
   …
  ]
}

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

Trong ví dụ này, bạn sẽ tính toán thời gian và khoảng cách di chuyển đến từng địa điểm trong phản hồi của Nearby Search. Ví dụ này tìm kiếm nhà hàng ở Sydney, Úc và đặt giới hạn vị trí cũng như điểm xuất phát của tuyến đường 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 cần phải sử dụng cùng một toạ độ cho locationRestriction và cho điểm xuất phát của tuyến đường. Ví dụ: bạn đặt locationRestriction thành điểm trung tâm của Sydney để thiên vị kết quả tìm kiếm cho vòng tròn đó. Nhưng sau đó, bạn đặt điểm xuất phát của tuyến đường thành toạ độ của nhà bạn, tức là một vị trí khác trong vòng tròn tìm kiếm. Sau đó, yêu cầu sẽ ưu tiên các kết quả tìm kiếm trong vòng tròn và tính toán thông tin tóm tắt về tuyến đường dựa trên vị trí nhà của bạn.

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

Theo mặc định, thời gian và khoảng cách đượ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 lựa chọn này, hãy xem phần Các loại phương tiện có thể dùng 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 lựa chọn 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 thức và liệu có nên đưa vào dữ liệu lưu lượng truy cập hay không.

    Thuộc tính routingParameters.routingPreference ảnh hưởng đến đường đi có trong trường directionsUri của Bản xem trước (giai đoạn trước khi phát hành rộng rãi) vì Google Maps hiển thị các lựa chọn về tình hình giao thông khi mở đường liên kết.

  • Sử dụng thuộc tính routingParameters.routeModifiers để chỉ định cho avoidTolls, avoidHighways, avoidFerries và avoidIndoor. Để biết thêm thông tin về các lựa 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 phương tiện di chuyển là DRIVE và tránh đườ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'

Hãy dùng thử!

APIs Explorer cho phép bạn tạo các yêu cầu mẫu để bạn có thể làm quen với API và các tuỳ chọn API.

  1. Chọn biểu tượng API api ở bên phải trang.

  2. Chỉnh sửa các tham số yêu cầu (không bắt buộc).

  3. Chọn nút Execute (Thực thi). Trong hộp thoại, hãy chọn tài khoản mà bạn muốn dùng để gửi yêu cầu.

  4. Trong bảng điều khiển APIs Explorer, hãy chọn biểu tượng toàn màn hình fullscreen để mở rộng cửa sổ APIs Explorer.