Obliczanie podsumowania wyznaczania trasy

Aby obliczyć czas podróży i odległość do każdego miejsca w odpowiedzi za pomocą wyszukiwania tekstowego (nowość) lub wyszukiwania w pobliżu (nowość):

  1. W żądaniu przekaż parametr routingParameters.origin, aby określić współrzędne szerokości i długości geograficznej punktu początkowego trasy. Ten parametr jest wymagany do obliczenia czasu trwania i odległości do każdego miejsca w odpowiedzi.

  2. W masce pola umieść routingSummaries, aby odpowiedź zawierała tablicę routingSummaries. Ta tablica zawiera czas trwania i odległość od punktu początkowego do każdego miejsca w odpowiedzi.

Narzędzie API Explorer umożliwia wysyłanie żądań w czasie rzeczywistym, dzięki czemu możesz zapoznać się z interfejsem API i jego opcjami:

W tym żądaniu obliczasz czas podróży i odległość do każdego miejsca w odpowiedzi na wyszukiwanie tekstowe (nowe):

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'

Odpowiedź zawiera 2 tablice JSON: tablica places zawiera pasujące miejsca, a tablica routingSummaries zawiera czas trwania i odległość podróży do każdego miejsca:

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

Każdy element w tablicy routingSummaries znajduje się w odpowiednim miejscu w tablicy places. Oznacza to, że element w pozycji routingSummaries[0] odpowiada miejscu w pozycji places[0].

Długość tablicy routingSummaries jest taka sama jak długość tablicy places. Jeśli routingSummary dla miejsca jest niedostępny, wpis w tablicy jest pusty.

W tym przykładzie obliczamy czas trwania i odległość od punktu początkowego do każdego miejsca, więc pole routingSummaries.legs w odpowiedzi zawiera pojedynczy obiekt Leg, który zawiera pola durationdistanceMeters od punktu początkowego do miejsca.

{
  "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"
    },
   
  ]
}

Z tego przykładu widać, że czas trwania i odległość od punktu początkowego wyznaczania trasy do pierwszego miejsca w wynikach wynoszą 597 sekund i 2607 metrów.

W tym przykładzie obliczasz czas trwania podróży i odległość do każdego miejsca w odpowiedzi na zapytanie Nearby Search. W tym przykładzie wyszukiwane są restauracje w Sydney w Australii, a ograniczenie lokalizacji i miejsce rozpoczęcia trasy są ustawione na te same współrzędne geograficzne:

  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

Nie musisz używać tych samych współrzędnych dla locationRestriction i  w przypadku miejsca docelowego. Możesz na przykład ustawić locationRestriction na środek Sydney, aby wyniki wyszukiwania były bardziej dopasowane do tego okręgu. Następnie ustawiasz punkt początkowy trasy na współrzędne swojego domu, czyli na inne miejsce w okręgu wyszukiwania. Żądanie to powoduje następnie dostosowanie wyników wyszukiwania do okręgu i obliczenie podsumowań tras na podstawie lokalizacji Twojego domu.

Określanie opcji podróży

Domyślnie obliczenia czasu trwania i odległości dotyczą samochodu. Możesz jednak określić typ pojazdu i inne opcje w wyszukiwaniu.

  • Użyj parametru routingParameters.travelMode, aby ustawić środek transportu na DRIVE, BICYCLE, WALK lub TWO_WHEELER. Więcej informacji o tych opcjach znajdziesz w artykule Dostępne typy pojazdów na trasach.

  • Użyj właściwości routingParameters.routingPreference, aby ustawić opcję preferencji routingu na TRAFFIC_UNAWARE (domyślnie), TRAFFIC_AWARE lub TRAFFIC_AWARE_OPTIMAL. Każda opcja ma różny poziom jakości danych i opóźnienia. Więcej informacji znajdziesz w artykule Określanie, czy i jak uwzględniać dane o ruchu.

    Właściwość routingParameters.routingPreference ma wpływ na wskazówki zawarte w polu Podgląd (przed udostępnieniem) directionsUri, ponieważ Mapy Google wyświetlają opcje ruchu po otwarciu linku.

  • Użyj właściwości routingParameters.routeModifiers, aby określić avoidTolls, avoidHighways, avoidFerriesavoidIndoor. Więcej informacji o tych opcjach znajdziesz w artykule Określanie funkcji trasy, których należy unikać.

W następnym przykładzie określasz środek transportu jako DRIVE i wybierasz opcję unikania autostrad:

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'

Wypróbuj

Eksplorator interfejsów API umożliwia wysyłanie przykładowych żądań, dzięki czemu możesz zapoznać się z interfejsem API i jego opcjami.

  1. Po prawej stronie strony kliknij ikonę interfejsu API api.

  2. Opcjonalnie możesz edytować parametry żądania.

  3. Kliknij przycisk Wykonaj. W oknie dialogowym wybierz konto, z którego chcesz wysłać prośbę.

  4. W panelu APIs Explorer kliknij ikonę pełnego ekranu fullscreen, aby rozwinąć okno narzędzia.