Tính toán tóm tắt đị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 vào yêu cầu để chỉ định vĩ độ và kinh độ của nguồn gốc định tuyến. Thông số này là cần thiết để tính toán thời gian và khoảng cách đến mỗi địa điểm trong của bạn.

  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ừ nguồn gốc định tuyến đến từng vị trí trong phản hồi.

Sử dụng tính năng tìm kiếm 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": [
    {
      "legs": [
        object (Leg)
      ]
    }
  ]
}

Mỗi phần tử trong mảng routingSummaries đều nằm trong mảng tương ứng vị trí làm địa điểm 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ừ tuyến đường điểm gốc của mỗi vị trí, trường legs trong phản hồi sẽ chứa một Leg duy nhất đối tượng chứa durationdistanceMeters trong nguồn gốc định tuyến vào đị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
        }
      ]
    },
    {
      "legs": [
        {
          "duration": "562s",
          "distanceMeters": 2345
        }
      ]
    },
   …
  ]
}

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 tính toán thời gian di chuyển và khoảng cách để đến mỗi địa điểm theo 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í và đ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 phải sử dụng cùng toạ độ cho locationRestriction và để định tuyến điểm khởi hành. Ví dụ: bạn đặt locationRestriction thành chính giữa điểm đến Sydney để hướng kết quả tìm kiếm vào vòng tròn đó. Nhưng sau đó, bạn đặ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 nội dung tìm kiếm.

  • Sử dụng tham số routingParameters.travelMode để đặt chế độ phương tiện giao thông đến DRIVE, BICYCLE, WALK hoặc TWO_WHEELER. Để biết thêm thông tin về những lựa chọn này, hãy xem Các loại xe có sẵn 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 bài viết Chỉ định cách thức và trường hợp bao gồm lưu lượng truy cập .
  • 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'