API Places может возвращать подробную информацию о конкретном месте. На этой странице объясняются различия между сведениями о месте, используемыми в классе Place
(новом) и PlacesService
(устаревшим), а также приводятся некоторые фрагменты кода для сравнения. В следующей таблице перечислены некоторые основные различия в использовании сведений о месте между классами Place
и PlacesService
:
PlacesService (устаревшая версия) | Place (Новое) |
---|---|
getDetails() | fetchFields() |
PlaceDetailsRequest | FetchFieldsRequest |
Методы требуют использования обратного вызова для обработки объекта результатов и ответа google.maps.places.PlacesServiceStatus . | Использует обещания и работает асинхронно. |
Методы требуют проверки PlacesServiceStatus . | Не требуется проверка статуса, можно использовать стандартную обработку ошибок. |
Поля данных о месте отформатированы с использованием змеиного регистра. | Поля данных о местах отформатированы с использованием верблюжьего регистра. |
Ограничено фиксированным набором типов мест и полей данных о местах . | Предоставляет расширенный выбор регулярно обновляемых типов мест и полей данных о местах . |
Сравнение кода
В этом разделе сравниваются два похожих фрагмента кода, чтобы проиллюстрировать различия между службой Places и классом Place. Фрагменты кода показывают код, необходимый для каждого соответствующего API, чтобы выполнить запрос сведений о месте, а затем использовать полученные данные о месте для добавления маркера на карту.
Служба адресов (устаревшая версия)
В следующем сокращенном фрагменте кода показано выполнение запроса сведений о месте с помощью PlacesService
. Запрос использует обратный вызов и включает обязательную условную проверку PlacesServiceStatus
. Необходимые поля данных о месте указываются в теле запроса.
function getPlaceDetails() {
// Instantiate the Places Service.
const service = new google.maps.places.PlacesService(map);
// Make a request using the Place ID.
const request = {
placeId: "ChIJN1t_tDeuEmsRUsoyG83frY4",
fields: ["name", "formatted_address", "place_id", "geometry"],
};
// Request place details.
service.getDetails(request, (place, status) => {
// Check whether PlacesServiceStatus is OK.
if (
status === google.maps.places.PlacesServiceStatus.OK &&
place &&
place.geometry &&
place.geometry.location
) {
// Log the result.
console.log(place.name);
console.log(place.formatted_address);
// Add a marker for the place.
const marker = new google.maps.Marker({
map,
position: place.geometry.location,
title: place.name,
});
}
});
}
Узнать больше
- См. полный пример кода
- Документация о месте
- Справочник
getDetails
Класс места (Новый)
В следующем сокращенном фрагменте кода показано выполнение запроса сведений о месте с использованием класса Place
. Запрос является асинхронным и не включает проверку статуса (можно использовать стандартную обработку ошибок). Идентификатор места используется для создания нового экземпляра Place
, который используется для выполнения запроса ( fetchFields()
). Необходимые поля данных о месте не передаются до тех пор, пока не будет вызвана fetchFields()
, что обеспечивает большую гибкость. Поскольку метод fetchFields()
использует оператор await, его можно использовать только внутри async
функции.
async function getPlaceDetails() {
// Use place ID to create a new Place instance.
const place = new google.maps.places.Place({
id: "ChIJN5Nz71W3j4ARhx5bwpTQEGg",
requestedLanguage: "en", // optional
});
// Call fetchFields, passing the needed data fields.
await place.fetchFields({
fields: ["displayName", "formattedAddress", "location"],
});
// Log the result.
console.log(place.displayName);
console.log(place.formattedAddress);
// Add an Advanced Marker.
const marker = new google.maps.marker.AdvancedMarkerElement({
map,
position: place.location,
title: place.displayName,
});
}
Узнать больше
- См. полный пример кода
- Документация о месте
- ссылка на
fetchFields()