На этой странице объясняются различия между функциями текстового поиска мест в классе Place (новый) и PlacesService (устаревший), а также приведены некоторые фрагменты кода для сравнения.
 Устаревший PlacesService имеет следующие методы текстового поиска:
-  Метод findPlaceFromQuery(), который принимает текстовый запрос и возвращает один результат места, а также поддерживает использование полей данных места.
-  Метод findPlaceFromPhoneNumber(), который позволяет искать место по номеру телефона и поддерживает использование полей данных о месте.
-  Метод textSearch(), который принимает текстовый запрос и возвращает список результатов поиска мест.textSearch()устарел и не поддерживает использование полей данных о местах.
 Новый класс Place предлагает метод Place.searchByText() , который позволяет искать места с помощью текстового запроса или номера телефона, а также позволяет настраивать поиск с помощью расширенного набора регулярно обновляемых полей данных о местах и типов мест.
 В следующей таблице перечислены некоторые основные различия в методах поиска мест между классом Place и PlacesService :
| PlacesService(устаревший) | Place(новое) | 
|---|---|
| findPlaceFromQuery()findPlaceFromPhoneNumber() | searchByText() | 
| FindPlaceFromQueryRequestFindPlaceFromPhoneNumberRequest | SearchByTextRequest | 
| Ограниченные возможности запроса. | Более расширенные возможности запроса. | 
| Требуется использование обратного вызова для обработки объекта результатов и ответа google.maps.places.PlacesServiceStatus. | Использует Promises и работает асинхронно. | 
| Требуется проверка PlacesServiceStatus. | Проверка статуса не требуется, можно использовать стандартную обработку ошибок. Подробнее . | 
| Поддерживает только смещение местоположения. | Поддерживает смещение местоположения и ограничение местоположения. | 
| Поля данных о месте отформатированы с использованием алфавитного регистра. | Поля данных о месте отформатированы с использованием CamelCase. | 
| Возвращает результат в одном месте. | Возвращает результаты до 20 мест. | 
| Ограничено фиксированным набором типов мест и полей данных о местах . | Предоставляет расширенный выбор регулярно обновляемых типов мест и полей данных о местах . | 
| textSearch() | searchByText() | 
| Возвращает все доступные поля данных ( подмножество поддерживаемых полей ); не может быть ограничен конкретными полями. | Возвращает только запрошенные поля данных о месте . | 
Сравнение кодов
В этом разделе сравнивается код методов текстового поиска, чтобы проиллюстрировать различия между сервисом Places и классом Place. Фрагменты кода показывают код, необходимый для выполнения текстового поискового запроса в каждом API.
Служба мест (устаревшая)
 В следующем фрагменте кода показано использование метода findPlaceFromQuery() для поиска места. Запрос выполняется синхронно и включает условную проверку PlacesServiceStatus . Необходимые поля данных о месте указываются в теле запроса, которое определяется до выполнения запроса.
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);
    }
  });
}
Узнать больше
Текстовый поиск (новый)
 В следующем фрагменте кода показано использование метода searchByText() для поиска мест. Запрос асинхронный и не требует проверки статуса (можно использовать стандартную обработку ошибок). В этом примере запрос включает maxResultCount , равный 8 (значение должно быть от 1 до 20). Эта функция перебирает результаты и добавляет маркер для каждого из них, корректируя границы карты в зависимости от положения маркеров. Поскольку метод searchByText() использует оператор await его можно использовать только внутри 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");
  }
}
 Метод searchByText() поддерживает гораздо больше параметров запроса по сравнению с предыдущей версией, включая:
-  includedType, который позволяет ограничить поиск определенным типом места.
-  isOpenNow, позволяющий ограничить поиск, возвращая только открытые места.
-  minRating, который позволяет отфильтровывать результаты ниже указанного предела (например, возвращать только места с тремя звездами и более).
-  locationRestriction, который исключает результаты за пределами указанного местоположения (также поддерживаетсяlocationBias).
Узнать больше
- Посмотреть полный пример кода
- См. документацию по текстовому поиску (новое)
-  См. справочник searchByText()