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

Cách sử dụ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 toán thời gian và khoảng cách di chuyển đế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 toạ độ vĩ độ và kinh độ của điểm bắt đầu đị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 mảng routingSummaries. Mảng này chứa thời lượng và khoảng cách từ điểm bắt đầu định tuyến đến từng địa điểm trong phản hồi.

API 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 lựa chọn API:

Trong yêu cầu sau, bạn sẽ 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 Text Search (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 2 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 với 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 bắt đầu đị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 duy nhất chứa durationdistanceMeters từ điểm bắt đầu đị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"
    },
   
  ]
}

Trong ví dụ này, bạn có thể thấy thời lượng và khoảng cách từ điểm bắt đầu định tuyến đến vị trí đầ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 Tìm kiếm lân cận. Ví dụ này tìm kiếm các nhà hàng ở Sydney, Úc và đặt chế độ hạn chế về 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 bắt đầu định tuyến. Ví dụ: bạn đặt locationRestriction ở tâm của Sydney để điều chỉnh kết quả tìm kiếm theo vòng tròn đó. Nhưng sau đó, bạn đặt điểm bắt đầu chỉ đường thành toạ độ nhà mình, tức là một vị trí khác trong vòng tròn tìm kiếm. Sau đó, yêu cầu này sẽ điều chỉnh kết quả tìm kiếm cho phù hợp với vòng tròn và tính toán thông tin tóm tắt về việc định tuyến dựa trên vị trí nhà của bạn.

Chỉ định các lựa chọn di chuyển

Theo mặc định, các phép tính về thời lượng và khoảng cách là dà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 quá trình tìm kiếm.

  • Sử dụng tham số routingParameters.travelMode để đặt chế độ 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 xe có thể dùng cho tuyến đường.

  • Sử dụng thuộc tính routingParameters.routingPreference để đặt lựa chọn ưu tiên về đị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à việc có nên thêm dữ liệu lưu lượng truy cập hay không.

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

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

Trong ví dụ tiếp theo, bạn chỉ định chế độ 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ử!

Trình khám phá API cho phép bạn đưa ra các yêu cầu mẫu để có thể làm quen với API và các lựa chọn API.

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

  2. Bạn có thể chỉnh sửa các tham số yêu cầu (không bắt buộc).

  3. Chọn nút Thực thi. Trong hộp thoại, hãy chọn tài khoản mà bạn muốn dùng để đưa ra 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.