Na tej stronie znajdziesz wyjaśnienie różnic między funkcjami wyszukiwania miejsc na podstawie tekstu w klasie Place (nowa) i PlacesService (starsza) oraz fragmenty kodu do porównania.
Starsza wersja PlacesService ma te metody wyszukiwania oparte na tekście:
- Metoda 
findPlaceFromQuery(), która przyjmuje zapytanie tekstowe i zwraca pojedynczy wynik dotyczący miejsca oraz obsługuje użycie pól danych o miejscu. - Metoda 
findPlaceFromPhoneNumber(), która umożliwia wyszukiwanie miejsca za pomocą numeru telefonu i obsługuje pola danych o miejscu. - Metoda 
textSearch(), która przyjmuje zapytanie tekstowe i zwraca listę wyników dotyczących miejsc.textSearch()jest starszy i nie obsługuje pól danych o miejscu. 
Nowa klasa Place oferuje metodę Place.searchByText(), która umożliwia wyszukiwanie miejsc za pomocą zapytania tekstowego lub numeru telefonu, a także dostosowywanie wyszukiwań za pomocą rozszerzonego wyboru regularnie aktualizowanych pól danych o miejscach i typów miejsc.
W tabeli poniżej znajdziesz główne różnice w metodach wyszukiwania miejsc między klasą Place a PlacesService:
PlacesService (starsza wersja) | 
      Place (Nowy) | 
    
|---|---|
          findPlaceFromQuery()findPlaceFromPhoneNumber()
       | 
      searchByText() | 
    
FindPlaceFromQueryRequestFindPlaceFromPhoneNumberRequest | 
      SearchByTextRequest | 
    
| Ograniczone opcje zapytań. | Więcej opcji zapytań. | 
Wymaga użycia wywołania zwrotnego do obsługi obiektu wyników i google.maps.places.PlacesServiceStatus odpowiedzi. | 
      Korzysta z obiektów Promise i działa asynchronicznie. | 
Wymaga sprawdzenia PlacesServiceStatus. | 
      Nie wymaga sprawdzania stanu, można użyć standardowej obsługi błędów. Więcej informacji | 
| Obsługuje tylko określanie lokalizacji. | Obsługuje preferencje lokalizacji i ograniczenia lokalizacji. | 
| Pola danych o miejscach są formatowane przy użyciu notacji snake case. | Pola danych o miejscu są sformatowane w notacji camel case. | 
| Zwraca pojedynczy wynik miejsca. | Zwraca do 20 wyników wyszukiwania miejsc. | 
| Ograniczone do stałego zestawu typów miejsc i pól danych o miejscach. | Zapewnia rozszerzony wybór regularnie aktualizowanych typów miejsc i pól danych o miejscach. | 
          textSearch() | 
      searchByText() | 
    
| Zwraca wszystkie dostępne pola danych (podzbiór obsługiwanych pól); nie można ograniczyć go do konkretnych pól. | Zwraca tylko żądane pola danych o miejscu. | 
Porównanie kodu
W tej sekcji porównujemy kod metod wyszukiwania tekstowego, aby zilustrować różnice między usługą Places a klasą Place. Fragmenty kodu pokazują kod wymagany w poszczególnych interfejsach API do wysyłania żądań wyszukiwania tekstowego.
Usługa Miejsca (starsza wersja)
Poniższy fragment kodu pokazuje, jak użyć metody findPlaceFromQuery() do wyszukania miejsca. Żądanie jest synchroniczne i zawiera sprawdzanie warunkowe elementu PlacesServiceStatus. Wymagane pola danych o miejscu są określone w treści żądania, która jest definiowana przed wysłaniem właściwego żądania.
function findPlaces() {
  const request = {
    query: "Museum of Contemporary Art Australia",
    fields: ["name", "geometry"],
  };
  // Create an instance of PlacesService.
  service = new google.maps.places.PlacesService(map);
  // Make a findPlaceFromQuery request.
  service.findPlaceFromQuery(request, (results, status) => {
    let place = results[0];
    if (status === google.maps.places.PlacesServiceStatus.OK && results) {
      if (!place.geometry || !place.geometry.location) return;
      const marker = new google.maps.Marker({
        map,
        position: place.geometry.location,
      });
      map.setCenter(place.geometry.location);
    }
  });
}
Więcej informacji
Wyszukiwanie tekstowe (nowość)
Poniższy fragment kodu pokazuje, jak użyć metody searchByText() do wyszukiwania miejsc. Żądanie jest asynchroniczne i nie wymaga sprawdzania stanu (można użyć standardowej obsługi błędów). W tym przykładzie żądanie zawiera wartość maxResultCount = 8 (wartość musi mieścić się w przedziale od 1 do 20). Ta funkcja przechodzi w pętli przez wyniki i dodaje znacznik dla każdego z nich, dostosowując granice mapy na podstawie pozycji znaczników. Metoda searchByText() używa operatora await, dlatego można jej używać tylko w funkcji async.
async function findPlaces() {
  // Define a request.
  // The `fields` property is required; all others are optional.
  const request = {
    fields: ["displayName", "location", "businessStatus"],
    textQuery: "Tacos in Mountain View",
    includedType: "restaurant",
    locationBias: { lat: 37.4161493, lng: -122.0812166 },
    isOpenNow: true,
    language: "en-US",
    maxResultCount: 8,
    minRating: 3.2,
    region: "us",
    useStrictTypeFiltering: false,
  };
  // Call searchByText passing the request.
  const { places } = await google.maps.places.Place.searchByText(request);
  // Add a marker for each result.
  if (places.length) {
    const bounds = new google.maps.LatLngBounds();
    places.forEach((place) => {
      const markerView = new google.maps.marker.AdvancedMarkerElement({
        map,
        position: place.location,
        title: place.displayName,
      });
      bounds.extend(place.location);
      console.log(place);
    });
    map.fitBounds(bounds);
  } else {
    console.log("No results");
  }
}
Metoda searchByText() obsługuje znacznie więcej opcji żądania niż poprzednia wersja, w tym:
includedType, która pozwala ograniczyć wyszukiwanie do określonego typu miejsca.isOpenNow, która pozwala ograniczyć wyszukiwanie tylko do otwartych miejsc.minRating, która umożliwia odfiltrowanie wyników poniżej określonego limitu (np. zwracanie tylko miejsc z oceną 3 gwiazdki lub wyższą).locationRestriction, która pomija wyniki spoza określonej lokalizacji (obsługiwana jest też wartośćlocationBias).
Więcej informacji
- Zobacz pełny przykładowy kod
 - Zobacz dokumentację wyszukiwania tekstowego (nowa wersja)
 - Zobacz 
searchByText()materiał referencyjny