Обзор
Функции библиотеки мест и Maps JavaScript API позволяют вашему приложению искать места (определенные в этом API как заведения, географические местоположения или известные достопримечательности), содержащиеся в определенной области, например в пределах карты или вокруг нее. фиксированная точка.
API Places предлагает функцию автозаполнения, которую вы можете использовать, чтобы предоставить вашим приложениям поведение опережающего поиска, как в поле поиска Google Maps. Когда пользователь начинает вводить адрес, автозаполнение заполнит все остальное. Дополнительную информацию см. в документации по автозаполнению .
Начиная
Если вы не знакомы с API JavaScript Карт или с JavaScript, мы рекомендуем просмотреть JavaScript и получить ключ API , прежде чем приступить к работе.
Включить API
Прежде чем использовать библиотеку Places в Maps JavaScript API, сначала убедитесь, что Places API включен в консоли Google Cloud в том же проекте, который вы настроили для Maps JavaScript API.
Чтобы просмотреть список включенных API:
- Перейдите в консоль Google Cloud .
- Нажмите кнопку «Выбрать проект» , затем выберите тот же проект, который вы настроили для Maps JavaScript API, и нажмите «Открыть» .
- В списке API на информационной панели найдите Places API .
- Если вы видите API Places в списке, значит, он уже включен. Если API нет в списке, включите его:
- В верхней части страницы выберите ВКЛЮЧИТЬ API И СЕРВИСЫ , чтобы отобразить вкладку «Библиотека» . Либо в меню слева выберите «Библиотека» .
- Найдите Places API , затем выберите его из списка результатов.
- Выберите ВКЛЮЧИТЬ . По завершении процесса Places API появится в списке API на информационной панели .
Загрузка библиотеки
Служба Places — это автономная библиотека, отдельная от основного кода API JavaScript Карт. Чтобы использовать функциональные возможности, содержащиеся в этой библиотеке, необходимо сначала загрузить ее с помощью параметра libraries
в URL-адресе начальной загрузки API Карт:
<script async
src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&loading=async&libraries=places&callback=initMap">
</script>
Дополнительную информацию см. в обзоре библиотек .
Добавьте Places API в список ограничений API ключа API.
Применение ограничений API к вашим ключам ограничивает использование ключа API одним или несколькими API или SDK. Запросы к API или SDK, связанные с ключом API, будут обработаны. Запросы к API или SDK, не связанные с ключом API, завершатся ошибкой. Чтобы ограничить ключ API для использования с библиотекой адресов, Maps JavaScript API:- Перейдите в консоль Google Cloud .
- Щелкните раскрывающийся список проекта и выберите проект, содержащий ключ API, который вы хотите защитить.
- Нажмите кнопку меню и выберите Платформа Google Maps > Учетные данные .
- На странице «Учетные данные» щелкните имя ключа API, который вы хотите защитить.
- На странице «Ограничить и переименовать ключ API» установите ограничения:
- Ограничения API
- Выберите Ограничить ключ .
- Нажмите «Выбрать API» и выберите Maps JavaScript API и Places API .
(Если какой-либо из API отсутствует в списке, его необходимо включить .)
- Нажмите СОХРАНИТЬ .
Ограничения и политики использования
Квоты
Библиотека Places разделяет квоту использования с Places API, как описано в документации по ограничениям использования для Places API.
Политика
Использование библиотеки Places и API JavaScript Карт должно соответствовать политикам, описанным для API Places .
Поиск мест
С помощью службы «Метки» вы можете выполнять следующие виды поиска:
- Функция «Найти место из запроса» возвращает место на основе текстового запроса (например, названия или адреса места).
- Функция «Найти место по номеру телефона» возвращает место по номеру телефона.
- Поиск поблизости возвращает список мест поблизости на основе местоположения пользователя.
- Текстовый поиск возвращает список близлежащих мест на основе строки поиска, например. "Пицца".
- Запросы Place Details возвращают более подробную информацию о конкретном месте, включая отзывы пользователей.
Возвращаемая информация может включать заведения, такие как рестораны, магазины и офисы, а также результаты «геокодирования», которые указывают адреса, политические районы, такие как города и другие достопримечательности.
Найти запросы мест
Запрос «Найти место» позволяет искать место по текстовому запросу или номеру телефона. Существует два типа запроса «Найти место»:
Найти место по запросу
Функция «Найти место из запроса» принимает текстовый ввод и возвращает место. Входными данными могут быть любые данные о месте, например название компании или адрес. Чтобы выполнить запрос «Найти место из запроса», вызовите метод findPlaceFromQuery()
службы PlacesService
, который принимает следующие параметры:
-
query
(обязательно) Текстовая строка для поиска, например: «ресторан» или «123 Main Street». Это должно быть название места, адрес или категория заведений. Любые другие типы ввода могут генерировать ошибки и не гарантируют, что они вернут действительные результаты. API Places вернет совпадения кандидатов на основе этой строки и упорядочит результаты в зависимости от их предполагаемой релевантности. -
fields
(обязательные) Одно или несколько полей, определяющих типы возвращаемых данных о месте. -
locationBias
(необязательно) Координаты, определяющие область поиска. Это может быть одно из следующих:- Набор координат широты и долготы, заданный как объект LatLngLiteral или LatLng.
- Прямоугольные границы (две пары широты и долготы или объект LatLngBounds )
- Радиус (в метрах) с центром в широте/долготе
Вы также должны передать метод обратного вызова в findPlaceFromQuery()
для обработки объекта результатов и ответа google.maps.places.PlacesServiceStatus
.
В следующем примере показан вызов findPlaceFromQuery()
с поиском «Музей современного искусства Австралии» и включением полей name
и geometry
.
var map; var service; var infowindow; function initMap() { var sydney = new google.maps.LatLng(-33.867, 151.195); infowindow = new google.maps.InfoWindow(); map = new google.maps.Map( document.getElementById('map'), {center: sydney, zoom: 15}); var request = { query: 'Museum of Contemporary Art Australia', fields: ['name', 'geometry'], }; var service = new google.maps.places.PlacesService(map); service.findPlaceFromQuery(request, function(results, status) { if (status === google.maps.places.PlacesServiceStatus.OK) { for (var i = 0; i < results.length; i++) { createMarker(results[i]); } map.setCenter(results[0].geometry.location); } }); }
Найти место по номеру телефона
Функция «Найти место по номеру телефона» принимает номер телефона и возвращает место. Чтобы выполнить запрос «Найти место по номеру телефона», вызовите метод findPlaceFromPhoneNumber()
службы PlacesService
, который принимает следующие параметры:
-
phoneNumber
(обязательно) Номер телефона в формате E.164 . -
fields
(обязательные) Одно или несколько полей, определяющих типы возвращаемых данных о месте. -
locationBias
(необязательно) Координаты, определяющие область поиска. Это может быть одно из следующих:- Набор координат широты и долготы, заданный как объект LatLngLiteral или LatLng.
- Прямоугольные границы (четыре точки широты и долготы или объект LatLngBounds )
- Радиус (в метрах) с центром в широте/долготе
Вы также должны передать метод обратного вызова findPlaceFromPhoneNumber()
для обработки объекта результатов и ответа google.maps.places.PlacesServiceStatus
.
Поля (методы «Найти место»)
Используйте параметр fields
, чтобы указать массив типов данных места, которые нужно вернуть. Например: fields: ['formatted_address', 'opening_hours', 'geometry']
. Используйте точку при указании составных значений. Например: opening_hours.weekday_text
.
Поля соответствуют результатам поиска мест и разделены на три платежные категории: «Базовая», «Контакт» и «Атмосфера». Базовые поля оплачиваются по базовой ставке и не требуют дополнительных затрат. Поля «Контакт» и «Атмосфера» оплачиваются по более высокой ставке. Дополнительную информацию смотрите в прайс-листе . Атрибуции ( html_attributions
) всегда возвращаются при каждом вызове, независимо от того, было ли запрошено поле.
Базовый
Категория «Базовый» включает в себя следующие поля:
business_status
, formatted_address
, geometry
, icon
, icon_mask_base_uri
, icon_background_color
, name
, permanently_closed
( устарело ), photos
, place_id
, plus_code
, types
Контакт
Категория «Контакт» включает следующее поле:opening_hours
( устарело в библиотеке мест, Maps JavaScript API. Используйте запрос сведений о месте, чтобы получить результаты
opening_hours
).Атмосфера
Категория «Атмосфера» включает следующие поля:price_level
, rating
, user_ratings_total
Методы findPlaceFromQuery()
и findPlaceFromPhoneNumber()
принимают один и тот же набор полей и могут возвращать одни и те же поля в своих соответствующих ответах.
Установить смещение местоположения (методы Find Place)
Используйте параметр locationBias
, чтобы поиск места отдавал предпочтение результатам в определенной области. Вы можете установить locationBias
следующими способами:
Смещение результатов в конкретную область:
locationBias: {lat: 37.402105, lng: -122.081974}
Определите прямоугольную область для поиска:
locationBias: {north: 37.41, south: 37.40, east: -122.08, west: -122.09}
Вы также можете использовать LatLngBounds .
Определите радиус поиска (в метрах) с центром в определенной области:
locationBias: {radius: 100, center: {lat: 37.402105, lng: -122.081974}}
Поисковые запросы поблизости
Поиск поблизости позволяет искать места в указанной области по ключевому слову или типу. Поиск поблизости всегда должен включать местоположение, которое можно указать одним из двух способов:
-
LatLngBounds
. - круглая область, определяемая как комбинация свойства
location
(определяющего центр круга как объектLatLng
) и радиуса, измеренного в метрах.
Поиск мест поблизости инициируется вызовом метода nearbySearch()
PlacesService
, который возвращает массив объектов PlaceResult
. Обратите внимание, что метод nearbySearch()
заменяет метод search()
начиная с версии 3.9.
service = new google.maps.places.PlacesService(map); service.nearbySearch(request, callback);
Этот метод принимает запрос со следующими полями:
- Любой из:
-
bounds
, который должен быть объектомgoogle.maps.LatLngBounds
, определяющим прямоугольную область поиска. Максимальное поддерживаемое диагональное расстояние для зоны границ составляет примерно 100 000 метров. -
location
иradius
; первый принимает объектgoogle.maps.LatLng
, а второй — простое целое число, представляющее радиус круга в метрах. Максимально разрешенный радиус составляет 50 000 метров. Обратите внимание: если дляrankBy
установлено значение DISTANCE, вы должны указатьlocation
, но не можете указатьradius
илиbounds
.
-
-
keyword
( необязательно ) — термин, который будет сопоставляться со всеми доступными полями, включая, помимо прочего, имя, тип и адрес, а также отзывы клиентов и другой сторонний контент. -
minPriceLevel
иmaxPriceLevel
( необязательно ) — ограничивает результаты только теми местами в пределах указанного диапазона. Допустимые значения находятся в диапазоне от 0 (самый доступный) до 4 (самый дорогой) включительно. -
name
Устарело. Эквивалентkeyword
. Значения в этом поле объединяются со значениями в полеkeyword
и передаются как часть той же строки поиска. -
openNow
( необязательно ) — логическое значение, указывающее, что служба Places должна возвращать только те места, которые открыты для бизнеса на момент отправки запроса. Места, для которых не указаны часы работы в базе данных Google Адресов, не будут возвращены, если вы включите этот параметр в свой запрос. УстановкаopenNow
значенияfalse
не имеет никакого эффекта. -
rankBy
( необязательно ) — определяет порядок, в котором отображаются результаты. Возможные значения:-
google.maps.places.RankBy.PROMINENCE
(по умолчанию). Эта опция сортирует результаты по их важности. В рейтинге будут отдаваться предпочтение видным местам в пределах заданного радиуса, а не близлежащим местам, которые совпадают, но менее заметны. На известность может влиять рейтинг места в индексе Google, глобальная популярность и другие факторы. Если указанgoogle.maps.places.RankBy.PROMINENCE
, параметрradius
является обязательным. -
google.maps.places.RankBy.DISTANCE
. Эта опция сортирует результаты в порядке возрастания по расстоянию от указанногоlocation
(обязательно). Обратите внимание, что вы не можете указать собственныеbounds
и/илиradius
, если укажетеRankBy.DISTANCE
. Когда вы указываетеRankBy.DISTANCE
, требуется одно или несколькоkeyword
,name
илиtype
.
-
-
type
— Ограничивает результаты местами, соответствующими указанному типу. Можно указать только один тип (если указано более одного типа, все типы, следующие за первой записью, игнорируются). См. список поддерживаемых типов .
Вам также необходимо передать метод обратного вызова в nearbySearch()
для обработки объекта результатов и ответа google.maps.places.PlacesServiceStatus
.
var map; var service; var infowindow; function initialize() { var pyrmont = new google.maps.LatLng(-33.8665433,151.1956316); map = new google.maps.Map(document.getElementById('map'), { center: pyrmont, zoom: 15 }); var request = { location: pyrmont, radius: '500', type: ['restaurant'] }; service = new google.maps.places.PlacesService(map); service.nearbySearch(request, callback); } function callback(results, status) { if (status == google.maps.places.PlacesServiceStatus.OK) { for (var i = 0; i < results.length; i++) { createMarker(results[i]); } } }
Текстовые поисковые запросы
Служба текстового поиска Google Адресов — это веб-служба, которая возвращает информацию о наборе мест на основе строки, например "пицца в Нью-Йорке" или "обувные магазины недалеко от Оттавы". Служба отвечает списком мест, соответствующих текстовой строке, и любым установленным смещениям местоположения. Ответ на поиск будет включать список мест. Вы можете отправить запрос Place Details для получения дополнительной информации о любом из мест в ответе.
Текстовый поиск инициируется вызовом метода textSearch()
PlacesService
.
service = new google.maps.places.PlacesService(map); service.textSearch(request, callback);
Этот метод принимает запрос со следующими полями:
-
query
( обязательный ) Текстовая строка для поиска, например: «ресторан» или «123 Main Street». Это должно быть название места, адрес или категория заведений. Любые другие типы ввода могут генерировать ошибки и не гарантируют, что они вернут действительные результаты. Служба Places вернет совпадения кандидатов на основе этой строки и упорядочит результаты в зависимости от их предполагаемой релевантности. Этот параметр становится необязательным, если в поисковом запросе также используется параметрtype
. - Необязательно:
-
openNow
— логическое значение, указывающее, что служба Places должна возвращать только те места, которые открыты для бизнеса на момент отправки запроса. Места, для которых не указаны часы работы в базе данных Google Адресов, не будут возвращены, если вы включите этот параметр в свой запрос. УстановкаopenNow
значенияfalse
не имеет никакого эффекта. -
minPriceLevel
иmaxPriceLevel
— ограничивает результаты только теми местами, которые находятся в пределах указанного уровня цен. Допустимые значения находятся в диапазоне от 0 (самый доступный) до 4 (самый дорогой) включительно. - Любой из:
-
bounds
, который должен быть объектомgoogle.maps.LatLngBounds
, определяющим прямоугольную область поиска. Максимальное поддерживаемое диагональное расстояние для зоны границ составляет примерно 100 000 метров. -
location
иradius
. Вы можете сместить результаты к указанному кругу, передавlocation
и параметрradius
. Это даст указание службе Адресов отдавать предпочтение показу результатов внутри этого круга. Результаты за пределами определенной области все равно могут отображаться. Местоположение принимает объектgoogle.maps.LatLng
, а радиус принимает простое целое число, представляющее радиус круга в метрах. Максимально разрешенный радиус составляет 50 000 метров.
-
-
type
— Ограничивает результаты местами, соответствующими указанному типу. Можно указать только один тип (если указано более одного типа, все типы, следующие за первой записью, игнорируются). См. список поддерживаемых типов .
-
Вы также должны передать метод обратного вызова в textSearch()
для обработки объекта результатов и ответа google.maps.places.PlacesServiceStatus
.
var map; var service; var infowindow; function initialize() { var pyrmont = new google.maps.LatLng(-33.8665433,151.1956316); map = new google.maps.Map(document.getElementById('map'), { center: pyrmont, zoom: 15 }); var request = { location: pyrmont, radius: '500', query: 'restaurant' }; service = new google.maps.places.PlacesService(map); service.textSearch(request, callback); } function callback(results, status) { if (status == google.maps.places.PlacesServiceStatus.OK) { for (var i = 0; i < results.length; i++) { var place = results[i]; createMarker(results[i]); } } }
Поиск ответов
Коды состояния
Объект ответа PlacesServiceStatus
содержит состояние запроса и может содержать отладочную информацию, которая поможет вам отследить причину сбоя запроса на место. Возможные значения статуса:
-
INVALID_REQUEST
: этот запрос недействителен. -
OK
: ответ содержит действительный результат. -
OVER_QUERY_LIMIT
: веб-страница превысила квоту запросов. -
REQUEST_DENIED
: веб-странице не разрешено использовать PlacesService. -
UNKNOWN_ERROR
: запрос PlacesService не удалось обработать из-за ошибки сервера. Запрос может быть успешным, если вы повторите попытку. -
ZERO_RESULTS
: по этому запросу результат не найден.
Результаты поиска мест
Функции findPlace()
, nearbySearch()
и textSearch()
возвращают массив объектов PlaceResult
.
Каждый объект PlaceResult
может включать в себя следующие свойства:
-
business_status
указывает рабочий статус места, если это бизнес. Он может содержать одно из следующих значений:-
OPERATIONAL
-
CLOSED_TEMPORARILY
-
CLOSED_PERMANENTLY
business_status
не возвращается. -
-
formatted_address
— строка, содержащая удобочитаемый адрес этого места. Свойствоformatted_address
возвращается только для текстового поиска .Часто этот адрес эквивалентен почтовому адресу. Обратите внимание, что некоторые страны, такие как Великобритания, не разрешают распространение настоящих почтовых адресов из-за лицензионных ограничений.
Форматированный адрес логически состоит из одного или нескольких компонентов адреса . Например, адрес «111 8th Avenue, New York, NY» состоит из следующих компонентов: «111» (номер улицы), «8th Avenue» (маршрут), «New York» (город) и «NY». » (штат США).
Не анализируйте отформатированный адрес программно. Вместо этого вам следует использовать отдельные компоненты адреса, которые включает в себя ответ API в дополнение к форматированному полю адреса.
-
geometry
: информация, связанная с геометрией места. Это включает в себя:-
location
определяет широту и долготу места. -
viewport
определяет предпочтительную область просмотра на карте при просмотре этого места.
-
-
permanently_closed
( устарело ) — это логический флаг, указывающий, закрыто ли место навсегда или временно (значениеtrue
). Не используйтеpermanently_closed
. Вместо этого используйтеbusiness_status
, чтобы получить операционный статус предприятий. -
plus_code
(см. Открытый код местоположения и плюсовые коды ) — это закодированная ссылка на местоположение, полученная из координат широты и долготы, которая представляет собой площадь: 1/8000 градуса на 1/8000 градуса (около 14 х 14 м на экваторе). или меньше. Плюсовые коды можно использовать вместо адресов в местах, где их нет (где здания не пронумерованы или улицы не названы).Код плюса форматируется как глобальный код и составной код:
-
global_code
— это 4-значный код города и 6-значный или более местный код (849VCWC8+R9). -
compound_code
— это локальный код длиной 6 или более символов с явным местоположением (CWC8+R9, Маунтин-Вью, Калифорния, США). Не анализируйте этот контент программно.
-
-
html_attributions
: массив атрибутов, которые следует отображать при отображении результатов поиска. Каждая запись в массиве содержит текст HTML для одной атрибуции. Примечание. Это совокупность всех атрибутов для всего поискового ответа. Таким образом, все объектыPlaceResult
в ответе содержат идентичные списки атрибутов. -
icon
возвращает URL-адрес цветного значка PNG размером 71 x 71 пикселей. -
icon_mask_base_uri
возвращает базовый URL-адрес бесцветного значка без расширения .svg или .png. -
icon_background_color
возвращает шестнадцатеричный код цвета по умолчанию для категории места. -
name
: Название места. -
opening_hours
может содержать следующую информацию:-
open_now
— логическое значение, указывающее, открыто ли место в текущий момент ( устарело в библиотеке адресов, Maps JavaScript API, вместо этого используйтеutc_offset_minutes
).
-
-
place_id
— это текстовый идентификатор, однозначно идентифицирующий место. Чтобы получить информацию о месте, передайте этот идентификатор в запросе Place Details . Узнайте больше о том, как ссылаться на место с помощью идентификатора места . -
rating
содержит рейтинг места от 0,0 до 5,0, основанный на совокупности отзывов пользователей. -
types
Массив типов для этого места (например,["political", "locality"]
или["restaurant", "lodging"]
). Этот массив может содержать несколько значений или может быть пустым. Новые значения могут быть введены без предварительного уведомления. См. список поддерживаемых типов . -
vicinity
: упрощенный адрес места, включая название улицы, номер улицы и населенный пункт, но не провинцию/штат, почтовый индекс или страну. Например, офис Google в Сиднее, Австралия, имеет значениеvicinity
5/48 Pirrama Road, Pyrmont
.
Доступ к дополнительным результатам
По умолчанию поиск по каждому месту возвращает до 20 результатов на запрос. Однако каждый поиск может возвращать до 60 результатов, разделенных на три страницы. Дополнительные страницы доступны через объект PlaceSearchPagination
. Чтобы получить доступ к дополнительным страницам, вы должны захватить объект PlaceSearchPagination
с помощью функции обратного вызова. Объект PlaceSearchPagination
определяется как:
-
hasNextPage
логическое свойство, указывающее, доступны ли дополнительные результаты.true
если есть дополнительная страница результатов. -
nextPage()
— функция, которая вернет следующий набор результатов. После выполнения поиска необходимо подождать две секунды, прежде чем станет доступна следующая страница результатов.
Чтобы просмотреть следующий набор результатов, вызовите nextPage
. Каждая страница результатов должна отображаться перед отображением следующей страницы результатов. Обратите внимание, что каждый поиск считается одним запросом в соответствии с вашими ограничениями на использование.
В приведенном ниже примере показано, как изменить функцию обратного вызова для захвата объекта PlaceSearchPagination
, чтобы вы могли отправлять несколько поисковых запросов.
Машинопись
// This example requires the Places library. Include the libraries=places // parameter when you first load the API. For example: // <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places"> function initMap(): void { // Create the map. const pyrmont = { lat: -33.866, lng: 151.196 }; const map = new google.maps.Map( document.getElementById("map") as HTMLElement, { center: pyrmont, zoom: 17, mapId: "8d193001f940fde3", } as google.maps.MapOptions ); // Create the places service. const service = new google.maps.places.PlacesService(map); let getNextPage: () => void | false; const moreButton = document.getElementById("more") as HTMLButtonElement; moreButton.onclick = function () { moreButton.disabled = true; if (getNextPage) { getNextPage(); } }; // Perform a nearby search. service.nearbySearch( { location: pyrmont, radius: 500, type: "store" }, ( results: google.maps.places.PlaceResult[] | null, status: google.maps.places.PlacesServiceStatus, pagination: google.maps.places.PlaceSearchPagination | null ) => { if (status !== "OK" || !results) return; addPlaces(results, map); moreButton.disabled = !pagination || !pagination.hasNextPage; if (pagination && pagination.hasNextPage) { getNextPage = () => { // Note: nextPage will call the same handler function as the initial call pagination.nextPage(); }; } } ); } function addPlaces( places: google.maps.places.PlaceResult[], map: google.maps.Map ) { const placesList = document.getElementById("places") as HTMLElement; for (const place of places) { if (place.geometry && place.geometry.location) { const image = { url: place.icon!, size: new google.maps.Size(71, 71), origin: new google.maps.Point(0, 0), anchor: new google.maps.Point(17, 34), scaledSize: new google.maps.Size(25, 25), }; new google.maps.Marker({ map, icon: image, title: place.name!, position: place.geometry.location, }); const li = document.createElement("li"); li.textContent = place.name!; placesList.appendChild(li); li.addEventListener("click", () => { map.setCenter(place.geometry!.location!); }); } } } declare global { interface Window { initMap: () => void; } } window.initMap = initMap;
JavaScript
// This example requires the Places library. Include the libraries=places // parameter when you first load the API. For example: // <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places"> function initMap() { // Create the map. const pyrmont = { lat: -33.866, lng: 151.196 }; const map = new google.maps.Map(document.getElementById("map"), { center: pyrmont, zoom: 17, mapId: "8d193001f940fde3", }); // Create the places service. const service = new google.maps.places.PlacesService(map); let getNextPage; const moreButton = document.getElementById("more"); moreButton.onclick = function () { moreButton.disabled = true; if (getNextPage) { getNextPage(); } }; // Perform a nearby search. service.nearbySearch( { location: pyrmont, radius: 500, type: "store" }, (results, status, pagination) => { if (status !== "OK" || !results) return; addPlaces(results, map); moreButton.disabled = !pagination || !pagination.hasNextPage; if (pagination && pagination.hasNextPage) { getNextPage = () => { // Note: nextPage will call the same handler function as the initial call pagination.nextPage(); }; } }, ); } function addPlaces(places, map) { const placesList = document.getElementById("places"); for (const place of places) { if (place.geometry && place.geometry.location) { const image = { url: place.icon, size: new google.maps.Size(71, 71), origin: new google.maps.Point(0, 0), anchor: new google.maps.Point(17, 34), scaledSize: new google.maps.Size(25, 25), }; new google.maps.Marker({ map, icon: image, title: place.name, position: place.geometry.location, }); const li = document.createElement("li"); li.textContent = place.name; placesList.appendChild(li); li.addEventListener("click", () => { map.setCenter(place.geometry.location); }); } } } window.initMap = initMap;
Попробуйте образец
Детали места
Помимо предоставления списка мест в пределах области, служба «Места» также может возвращать подробную информацию о конкретном месте. После того как место возвращается в ответ на поиск места, его идентификатор места можно использовать для запроса дополнительных сведений об этом месте, таких как полный адрес, номер телефона, рейтинг пользователей, отзывы и т. д.
Разместить запросы на получение подробной информации
Сведения о месте запрашиваются с помощью вызова метода getDetails()
службы.
service = new google.maps.places.PlacesService(map); service.getDetails(request, callback);
Этот метод принимает запрос, содержащий placeId
нужного места и поля, указывающие, какие типы данных Places нужно вернуть. Узнайте больше о том, как ссылаться на место с помощью идентификатора места .
Он также принимает метод обратного вызова, который должен обрабатывать код состояния, переданный в ответе google.maps.places.PlacesServiceStatus
, а также объект google.maps.places.PlaceResult
.
var request = { placeId: 'ChIJN1t_tDeuEmsRUsoyG83frY4', fields: ['name', 'rating', 'formatted_phone_number', 'geometry'] }; service = new google.maps.places.PlacesService(map); service.getDetails(request, callback); function callback(place, status) { if (status == google.maps.places.PlacesServiceStatus.OK) { createMarker(place); } }
Поля (детали места)
Параметрfields
принимает массив строк (имен полей). Используйте параметр fields
, чтобы указать массив типов данных места, которые нужно вернуть. Например: fields: ['address_components', 'opening_hours', 'geometry']
. Используйте точку при указании составных значений. Например: opening_hours.weekday_text
.
Поля соответствуют результатам Place Details и разделены на три платежные категории: «Базовая», «Контакт» и «Атмосфера». Базовые поля оплачиваются по базовой ставке и не требуют дополнительных затрат. Поля «Контакт» и «Атмосфера» оплачиваются по более высокой ставке. Дополнительную информацию смотрите в прайс-листе . Атрибуции ( html_attributions
) всегда возвращаются при каждом вызове, независимо от того, был ли он запрошен.
Базовый
Категория «Базовый» включает в себя следующие поля:
address_components
, adr_address
, business_status
, formatted_address
, geometry
, icon
, icon_mask_base_uri
, icon_background_color
, name
, permanently_closed
( устарело ), photo
, place_id
, plus_code
, type
, url
, utc_offset
( устарело в библиотеке адресов, Maps JavaScript API), utc_offset_minutes
, vicinity
Контакт
Категория «Контакты» включает в себя следующие поля:
formatted_phone_number
, international_phone_number
, opening_hours
, website
Атмосфера
Категория «Атмосфера» включает в себя следующие поля: price_level
, rating
, reviews
, user_ratings_total
Узнайте больше о полях места . Дополнительную информацию о том, как оплачиваются запросы данных о местах, см. в разделе «Использование и выставление счетов» .
Детали места Ответы
Коды состояния
Объект ответа PlacesServiceStatus
содержит состояние запроса и может содержать отладочную информацию, которая поможет вам отследить причину сбоя запроса сведений о месте. Возможные значения статуса:
-
INVALID_REQUEST
: этот запрос недействителен. -
OK
: ответ содержит действительный результат. -
OVER_QUERY_LIMIT
: веб-страница превысила квоту запросов. -
NOT_FOUND
Указанное местоположение не найдено в базе данных мест. -
REQUEST_DENIED
: веб-странице не разрешено использовать PlacesService. -
UNKNOWN_ERROR
: запрос PlacesService не удалось обработать из-за ошибки сервера. Запрос может быть успешным, если вы повторите попытку. -
ZERO_RESULTS
: по этому запросу результат не найден.
Детали места Результаты
Успешный вызов getDetails()
возвращает объект PlaceResult
со следующими свойствами:
-
address_components
: массив, содержащий отдельные компоненты, применимые к этому адресу.Каждый компонент адреса обычно содержит следующие поля:
-
types[]
— это массив, указывающий тип компонента адреса. См. список поддерживаемых типов . -
long_name
— это полное текстовое описание или имя компонента адреса, возвращаемое Геокодером. -
short_name
— это сокращенное текстовое имя компонента адреса, если оно доступно. Например, компонент адреса для штата Аляска может иметьlong_name
«Аляска» иshort_name
«АК», используя двухбуквенное почтовое сокращение.
Обратите внимание на следующие факты о массиве
address_components[]
:- Массив компонентов адреса может содержать больше компонентов, чем
formatted_address
. - Массив не обязательно включает в себя все политические объекты, содержащие адрес, кроме включенных в
formatted_address
. Чтобы получить все политические объекты, содержащие определенный адрес, вам следует использовать обратное геокодирование, передавая широту/долготу адреса в качестве параметра запроса. - Не гарантируется, что формат ответа останется неизменным между запросами. В частности, количество
address_components
варьируется в зависимости от запрошенного адреса и может меняться со временем для одного и того же адреса. Компонент может менять положение в массиве. Тип компонента может измениться. В более позднем ответе может отсутствовать определенный компонент.
-
-
business_status
указывает рабочий статус места, если это бизнес. Он может содержать одно из следующих значений:-
OPERATIONAL
-
CLOSED_TEMPORARILY
-
CLOSED_PERMANENTLY
business_status
не возвращается. -
-
formatted_address
: удобочитаемый адрес этого места.Часто этот адрес эквивалентен почтовому адресу. Обратите внимание, что некоторые страны, такие как Великобритания, не разрешают распространение настоящих почтовых адресов из-за лицензионных ограничений.
Форматированный адрес логически состоит из одного или нескольких компонентов адреса . Например, адрес «111 8th Avenue, New York, NY» состоит из следующих компонентов: «111» (номер улицы), «8th Avenue» (маршрут), «New York» (город) и «NY». » (штат США).
Не анализируйте отформатированный адрес программно. Вместо этого вам следует использовать отдельные компоненты адреса, которые включает в себя ответ API в дополнение к форматированному полю адреса.
-
formatted_phone_number
: номер телефона места, отформатированный в соответствии с региональным соглашением о номере . -
geometry
: информация, связанная с геометрией места. Это включает в себя:-
location
определяет широту и долготу места. -
viewport
определяет предпочтительную область просмотра на карте при просмотре этого места.
-
-
permanently_closed
( deprecated ) — логический флаг, указывающий, закрыто ли место навсегда или временно (значениеtrue
). Не используйтеpermanently_closed
. Вместо этого используйтеbusiness_status
, чтобы получить операционный статус предприятий. -
plus_code
(см. Открытый код местоположения и плюсовые коды ) — это закодированная ссылка на местоположение, полученная из координат широты и долготы, которая представляет собой площадь: 1/8000 градуса на 1/8000 градуса (около 14 х 14 м на экваторе). или меньше. Плюсовые коды можно использовать вместо адресов в местах, где их нет (где здания не пронумерованы или улицы не названы).Код плюса форматируется как глобальный код и составной код:
-
global_code
— это 4-значный код города и 6-значный или более местный код (849VCWC8+R9). -
compound_code
— это локальный код длиной 6 или более символов с явным местоположением (CWC8+R9, Маунтин-Вью, Калифорния, США). Не анализируйте этот контент программно.
-
-
html_attributions
: текст атрибуции, который будет отображаться для этого результата места. -
icon
: URL-адрес ресурса изображения, который можно использовать для представления типа этого места. -
international_phone_number
содержит номер телефона места в международном формате. Международный формат включает код страны и предваряется знаком плюс (+). Например,international_phone_number
офиса Google в Сиднее, Австралия:+61 2 9374 4000
. -
name
: Название места. -
utc_offset
Устарело в библиотеке Places, API JavaScript Карт, вместо этого используйтеutc_offset_minutes
. -
utc_offset_minutes
содержит количество минут, на которое текущий часовой пояс этого места смещен от UTC. Например, для мест в Сиднее, Австралия, во время летнего времени это будет 660 (+11 часов от UTC), а для мест в Калифорнии вне летнего времени это будет -480 (-8 часов от UTC). -
opening_hours
содержит следующую информацию:-
open_now
( устарело в библиотеке мест, Maps JavaScript API; вместо этого используйте open_hours.isOpen() . Посмотрите это видео , чтобы узнать, как использоватьisOpen
с подробностями о месте.) — логическое значение, указывающее, открыто ли место в текущий момент. -
periods[]
— это массив периодов открытия, охватывающий семь дней, начиная с воскресенья, в хронологическом порядке. Каждый период содержит:-
open
содержит пару объектов дня и времени, описывающих, когда открывается место:-
day
число от 0 до 6, соответствующее дням недели, начиная с воскресенья. Например, 2 означает вторник. -
time
может содержать время суток в 24-часовом формате ччмм (значения находятся в диапазоне 0000–2359).time
будет указано в часовом поясе места.
-
-
close
может содержать пару объектов дня и времени, описывающих, когда заведение закрывается. Примечание. Если место всегда открыто , разделclose
в ответе будет отсутствовать. Приложения могут рассчитывать на то, что всегда открытый период будет представлен какopen
период, содержащийday
со значением 0 иtime
со значением 0000, а также отсутствиеclose
.
-
-
weekday_text
— это массив из семи строк, представляющих отформатированные часы работы для каждого дня недели. Если в запросе деталей языка был указанlanguage
параметр, служба мест будет отформатировать и локализовать часы работы надлежащим образом для этого языка. Заказ элементов в этом массиве зависит отlanguage
параметра. Некоторые языки начинают неделю в понедельник, в то время как другие начинаются в воскресенье.
-
-
permanently_closed
( устаревший ) является логическим флагом, указывающим, закрылось ли место либо навсегда, либо временно (значениеtrue
). Не используйтеpermanently_closed
. Вместо этого используйтеbusiness_status
, чтобы получить операционный статус предприятий. -
photos[]
: массив объектовPlacePhoto
.PlacePhoto
можно использовать для получения фотографии с помощью методаgetUrl()
, или вы можете проверить объект на предмет следующих значений:-
height
: максимальная высота изображения, в пикселях. -
width
: максимальная ширина изображения, в пикселях. -
html_attributions
: текст атрибуции, который будет отображаться с помощью этого места.
-
-
place_id
: текстовый идентификатор, который уникально идентифицирует место и может использоваться для извлечения информации о месте с помощью запроса о деталях места . Узнайте больше о том, как ссылаться на место с идентификатором места . -
rating
: рейтинг места, от 0,0 до 5,0, на основе агрегированных отзывов пользователей. -
reviews
массивы до пяти обзоров. Каждый обзор состоит из нескольких компонентов:-
aspects[]
содержит массивPlaceAspectRating
объектов, каждый из которых обеспечивает оценку одного атрибута учреждения. Первый объект в массиве считается основным аспектом. КаждоеPlaceAspectRating
определяется как:-
type
название аспекта, который оценивается. Поддерживаются следующие типы:appeal
,atmosphere
,decor
,facilities
,food
,overall
,quality
иservice
. -
rating
рейтинга пользователя для этого конкретного аспекта, от 0 до 3.
-
-
author_name
Имя пользователя, который отправил обзор. Анонимные отзывы приписываются «пользователю Google». Если был установлен язык языка, то фраза «Пользователь Google» вернет локализованную строку. -
author_url
URL -адрес для пользователей Google+ профиля, если доступно. -
language
ИЭТ -языковой код, указывающий язык, используемый в обзоре пользователя. Это поле содержит только основной тег языка, а не вторичный тег, указывающий на страну или регион. Например, все английские обзоры помечены как «en», а не «en-au» или «en-uk» и так далее. -
rating
общего рейтинга пользователя для этого места. Это целое число, в диапазоне от 1 до 5. -
text
обзор пользователя. При просмотре местоположения с Google Place обзоры считаются необязательными; Следовательно, это поле может пусто.
-
-
types
множества типов для этого места (например,["political", "locality"]
или["restaurant", "lodging"]
). Этот массив может содержать несколько значений или может быть пустым. Новые значения могут быть введены без предварительного уведомления. Смотрите список поддерживаемых типов . -
url
: URL официальной страницы Google для этого места. Это страница, принадлежащая Google, которая содержит лучшую доступную информацию о месте. Приложения должны ссылаться на эту страницу или встроить эту страницу на любой экране, на котором показаны подробные результаты о месте для пользователя. -
vicinity
: упрощенный адрес для этого места, включая название улицы, номер улицы и местность, но не провинция/штат, почтовый кодекс или страна. Например, Google в Сиднее, Австралийский офис имеетvicinity
ценность5/48 Pirrama Road, Pyrmont
. Собственностьvicinity
возвращается только для близлежащего поиска . -
website
перечисляет авторитетный веб -сайт для этого места, например, на домашней странице бизнеса.
Примечание. Многомерные оценки могут быть недоступны для всех мест. Если слишком мало обзоров, то ответ деталей либо будет включать в себя Legacy Rating по шкале от 0,0 до 5,0 (если таковой имеется), либо вообще не вообще.
Ссылка на место с идентификатором места
Идентификатор места - это уникальная ссылка на место на карте Google. Идентификаторы места доступны для большинства мест, включая предприятия, достопримечательности, парки и перекрестки.
Чтобы использовать идентификатор места в вашем приложении, вы должны сначала найти идентификатор, который доступен в PlaceResult
of the Place Search или запроса деталей. Затем вы можете использовать это идентификатор места, чтобы посмотреть детали места .
Идентификаторы размещения освобождаются от ограничений кэширования, указанных в разделе 3.2.3 (b) Условий обслуживания платформы Google Maps. Поэтому вы можете хранить значения идентификатора для последующего использования. Для получения лучших практик при хранении идентификаторов места см. Обзор идентификации места .
var map; function initialize() { // Create a map centered in Pyrmont, Sydney (Australia). map = new google.maps.Map(document.getElementById('map'), { center: {lat: -33.8666, lng: 151.1958}, zoom: 15 }); // Search for Google's office in Australia. var request = { location: map.getCenter(), radius: '500', query: 'Google Sydney' }; var service = new google.maps.places.PlacesService(map); service.textSearch(request, callback); } // Checks that the PlacesServiceStatus is OK, and adds a marker // using the place ID and location from the PlacesService. function callback(results, status) { if (status == google.maps.places.PlacesServiceStatus.OK) { var marker = new google.maps.Marker({ map: map, place: { placeId: results[0].place_id, location: results[0].geometry.location } }); } } google.maps.event.addDomListener(window, 'load', initialize);
Поместите фотографии
Функция Place Photo позволяет добавлять высококачественный фотографический контент на ваш сайт. Фото -служба дает вам доступ к миллионам фотографий, хранящихся в местах и локальной базе данных Google+. Когда вы получите информацию о размещении, используя запрос на информацию о местах, ссылки на фотографии будут возвращены для соответствующего фотографического контента. Бесзамянутые запросы на поиск и текстовый поиск также возвращают одну ссылку на фотографию на место, когда это уместно. Используя фото службу, вы можете получить доступ к указанным фотографиям и изменить размер изображения до оптимального размера для вашего приложения.
Массив объектов PlacePhoto
будет возвращен как часть объекта PlaceResult
для любых запросов getDetails()
, textSearch()
или nearbySearch()
сделанным против PlacesService
.
Примечание. Количество возвращенных фотографий варьируется в зависимости от запроса.
- Ближайший поиск или текстовый поиск вернется не более одного объекта
PlacePhoto
. - Запрос деталей вернется до десяти объектов
PlacePhoto
.
Вы можете запросить URL для связанного изображения, вызывая метод PlacePhoto.getUrl()
и передавая действительный объект PhotoOptions
. Объект PhotoOptions
позволяет указать максимальную желаемую высоту и ширину изображения. Если вы указали значение как для maxHeight
, так и maxWidth
, фото служба будет изменять размер изображения до меньшего размера из двух размеров, сохраняя при этом исходное соотношение сторон.
Следующий фрагмент кода принимает объект Place и добавляет маркер к карте, если фотография существует. Изображение маркера по умолчанию заменяется небольшой версией фотографии.
function createPhotoMarker(place) { var photos = place.photos; if (!photos) { return; } var marker = new google.maps.Marker({ map: map, position: place.geometry.location, title: place.name, icon: photos[0].getUrl({maxWidth: 35, maxHeight: 35}) }); }
Фотографии, возвращаемые фото -сервисом, получены из различных мест, включая владельцев бизнеса и пользовательские фотографии. В большинстве случаев эти фотографии могут использоваться без атрибуции или будут иметь необходимую атрибуцию, включенную как часть изображения. Однако, если возвращаемый photo
включает значение в поле html_attributions
, вы должны включить дополнительную атрибуцию в ваше приложение, где бы вы ни отображали изображение.
Обзор
Функции в библиотеке мест, карты JavaScript API позволяют вашему приложению искать места (определенные в этом API как учреждения, географические место фиксированная точка.
API Place предлагает функцию автозаполнения, которую вы можете использовать для предоставления вашим приложениям поведение в области поиска Google Maps. Когда пользователь начнет печатать адрес, автозаполнение заполнит остальное. Для получения дополнительной информации см. Документацию автозаполнения .
Начиная
Если вы не знакомы с API Maps JavaScript или с JavaScript, мы рекомендуем просмотреть JavaScript и получить ключ API до начала работы.
Включить API
Перед использованием библиотеки «Места» в API Maps JavaScript, сначала убедитесь, что API Place включен в облачной консоли Google, в том же проекте, который вы настроили для API Maps JavaScript.
Чтобы просмотреть свой список включенных API:
- Перейдите в Cloud Console Google .
- Нажмите кнопку «Выберите проект» , затем выберите тот же проект, который вы настроили для API Maps JavaScript, и нажмите «Открыть» .
- Из списка API на приборной панели ищите места API .
- Если вы видите места API в списке, он уже включен. Если API не указан, включите его:
- В верхней части страницы выберите «Включить API и службы», чтобы отобразить вкладку библиотеки . В качестве альтернативы, в левой стороне меню выберите библиотеку .
- Поиск по местам API , затем выберите его из списка результатов.
- Выберите Enable . Когда процесс заканчивается, места API появляется в списке API на приборной панели .
Загрузка библиотеки
Сервис Places-это автономная библиотека, отдельная от основных карт JavaScript API-кода. Чтобы использовать функциональность, содержащуюся в этой библиотеке, необходимо сначала загрузить ее, используя параметр libraries
в URL -адреса Bootstrap Maps API:
<script async
src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&loading=async&libraries=places&callback=initMap">
</script>
Смотрите обзор библиотек для получения дополнительной информации.
Добавить места API в список ограничений API API
Применение ограничений API к вашим ключам ограничивает использование ключа API на один или несколько API или SDK. Запросы на API или SDK, связанные с ключом API, будут обработаны. Запросы на API или SDK, не связанный с ключом API, потерпят неудачу. Чтобы ограничить ключ API для использования с библиотекой мест, карты JavaScript API:- Перейдите в Cloud Console Google .
- Нажмите на раскрытие проекта и выберите проект, который содержит ключ API, который вы хотите получить.
- Нажмите кнопку меню и выберите Google Maps Platform> Учетные данные .
- На странице учетных данных нажмите на имя ключа API, который вы хотите получить.
- На странице ограничений и переименования ключей API установите ограничения:
- Ограничения API
- Выберите ограниченный ключ .
- Нажмите «Выбрать API» и выберите оба карты JavaScript API и размещает API .
(Если какой -либо из API не указан, вам нужно включить его.)
- Нажмите Сохранить .
Пределы использования и политики
Квоты
Библиотека мест разделяет квоту использования с API Place, как описано в документации «Ограничения использования» для API.
Политика
Использование библиотеки мест, карты JavaScript API должны соответствовать политикам, описанным для API Place .
Поместите поиски
С помощью службы мест вы можете выполнить следующие виды поисков:
- Найдите место из запроса возвращает место на основе текстового запроса (например, имя или адрес места).
- Найдите место с номера телефона Возвращает место на основе номера телефона.
- Близлежащий поиск возвращает список близлежащих мест на основе местоположения пользователя.
- Текстовый поиск возвращает список близлежащих мест на основе строки поиска, например. "Пицца".
- Поместите запросы на информацию о возврате более подробной информации о конкретном месте, включая отзывы пользователей.
Возвращенная информация может включать заведения, такие как рестораны, магазины и офисы, а также результаты «геокоде», которые указывают на адреса, политические области, такие как города и города, и другие представляющие интерес.
Найдите запросы места
Запрос «Найти место» позволяет искать место по текстовому запросу или номеру телефона. Есть два типа запроса на поиск:
Найдите место из запроса
Найти место из запроса берет текстовый ввод и возвращает место. Ввод может быть любым видом данных, например, названием бизнеса или адресом. Чтобы сделать место поиска из запроса запроса, вызовите метод PlacesService
's findPlaceFromQuery()
, который принимает следующие параметры:
-
query
(требуется) текстовая строка, на которой можно найти, например: «Ресторан» или «123 Main Street». Это должно быть название места, адрес или категория учреждений. Любые другие типы ввода могут генерировать ошибки и не гарантированно возвращать действительные результаты. API Place вернет матчи кандидатов на основе этой строки и заказывают результаты на основе их предполагаемой актуальности. -
fields
(требуются) одно или несколько полей, указывающих типы данных о том, что данные для возврата. -
locationBias
(необязательно) Координаты определения области для поиска. Это может быть одно из следующих действий:- Набор координат LAT/LNG, указанный как LatlnGliteral или Latlng объект
- Прямоугольные границы (две пары LAT/LNG, или объект LatlngBounds )
- Радиус (в метрах) сосредоточен на лат/СПГ
Вы также должны передать метод обратного вызова, чтобы findPlaceFromQuery()
, чтобы обрабатывать объект результатов и google.maps.places.PlacesServiceStatus
response.
В следующем примере показан призыв к findPlaceFromQuery()
, в поисках «Музей современного искусства Австралии», включая поля name
и geometry
.
var map; var service; var infowindow; function initMap() { var sydney = new google.maps.LatLng(-33.867, 151.195); infowindow = new google.maps.InfoWindow(); map = new google.maps.Map( document.getElementById('map'), {center: sydney, zoom: 15}); var request = { query: 'Museum of Contemporary Art Australia', fields: ['name', 'geometry'], }; var service = new google.maps.places.PlacesService(map); service.findPlaceFromQuery(request, function(results, status) { if (status === google.maps.places.PlacesServiceStatus.OK) { for (var i = 0; i < results.length; i++) { createMarker(results[i]); } map.setCenter(results[0].geometry.location); } }); }
Найдите место с номера телефона
Найдите место с номера телефона, занимает номер телефона и возвращает место. Чтобы сделать место поиска из запроса номера телефона, вызовите метод PlacesService
's findPlaceFromPhoneNumber()
, который принимает следующие параметры:
-
phoneNumber
(требуется) номер телефона, в формате E.164 . -
fields
(требуются) одно или несколько полей, указывающих типы данных о том, что данные для возврата. -
locationBias
(необязательно) Координаты определения области для поиска. Это может быть одно из следующих действий:- Набор координат LAT/LNG, указанный как LatlnGliteral или Latlng объект
- Прямоугольные границы (четыре точки LAT/LNG или объект LatlngBounds )
- Радиус (в метрах) сосредоточен на лат/СПГ
Вы также должны передать метод обратного вызова, чтобы findPlaceFromPhoneNumber()
, чтобы обрабатывать объект результатов и google.maps.places.PlacesServiceStatus
response.
Поля (найти методы места)
Используйте параметр fields
, чтобы указать массив типов данных места для возврата. Например: fields: ['formatted_address', 'opening_hours', 'geometry']
. Используйте точку при указании значений состава. Например: opening_hours.weekday_text
.
Поля соответствуют результатам поиска места и разделены на три категории выставления счетов: базовая, контактная и атмосфера. Основные поля выставляются по базовой ставке и не несут дополнительных сборов. Поля контактов и атмосферы выставлены по более высокой ставке. Смотрите ценовой лист для получения дополнительной информации. Атрибуты ( html_attributions
) всегда возвращаются с каждым вызовом, независимо от того, было ли полевое поле.
Базовый
Основная категория включает в себя следующие поля:
business_status
, formatted_address
, geometry
, icon
, icon_mask_base_uri
, icon_background_color
, name
, permanently_closed
( устарело ), photos
, place_id
, plus_code
, types
Контакт
Категория контактов включает в себя следующее поле:opening_hours
( Установится в библиотеке мест, карты JavaScript API. Используйте запрос сведений о местах, чтобы получить результаты
opening_hours
).Атмосфера
Категория атмосферы включает в себя следующие поля:price_level
, rating
, user_ratings_total
Методы findPlaceFromQuery()
и findPlaceFromPhoneNumber()
каждый из которых принимает один и тот же набор полей и может вернуть одни и те же поля в своих соответствующих ответах.
Установить смещение местоположения (найти методы места)
Используйте параметр locationBias
, чтобы сделать результаты Find Place FALE в определенной области. Вы можете установить locationBias
следующими способами:
Смещение приводит к конкретной области:
locationBias: {lat: 37.402105, lng: -122.081974}
Определите прямоугольную область для поиска:
locationBias: {north: 37.41, south: 37.40, east: -122.08, west: -122.09}
Вы также можете использовать Latlngbounds .
Определите радиус для поиска (в метрах), сосредоточенный на определенной области:
locationBias: {radius: 100, center: {lat: 37.402105, lng: -122.081974}}
Близлежащие запросы на поиск
Ближайший поиск позволяет искать места в указанной области по ключевым словам или типу. Близлежащий поиск должен всегда включать местоположение, которое может быть указано одним из двух способов:
-
LatLngBounds
. - Круглая область, определенная как комбинация свойства
location
- определение центра круга в виде объектаLatLng
- и радиус, измеренный в метрах.
Места близлежащего поиска инициируется при вызове метода PlacesService
's nearbySearch()
, который вернет массив объектов PlaceResult
. Обратите внимание, что метод nearbySearch()
заменяет метод search()
как версии 3.9.
service = new google.maps.places.PlacesService(map); service.nearbySearch(request, callback);
Этот метод принимает запрос на следующих полях:
- Любой из:
-
bounds
, которые должны быть объектомgoogle.maps.LatLngBounds
, определяющий прямоугольную область поиска. Максимально поддерживаемое диагональное расстояние для области границ составляет приблизительно 100 000 метров. -
location
иradius
; Первый берет объектgoogle.maps.LatLng
, а последний принимает простое целое число, представляющее радиус круга в метрах. Максимально допустимый радиус составляет 50 000 метров. Обратите внимание, что когдаrankBy
установлен на расстояние, вы должны указатьlocation
, но вы не можете указатьradius
илиbounds
.
-
-
keyword
( необязательно )-термин, подлежащий сопоставлению со всеми доступными областями, включая, помимо прочего, имя, тип и адрес, а также отзывы клиентов и другой сторонний контент. -
minPriceLevel
иmaxPriceLevel
( необязательно ) - ограничивает результаты только для тех мест в указанном диапазоне. Допустимые значения варьируются от 0 (наиболее доступных) до 4 (наиболее дорогих), включительно. -
name
устарело. Эквивалентkeyword
. Значения в этом поле объединяются со значениями в полеkeyword
и передаются как часть той же строки поиска. -
openNow
( необязательно ) - логическое значение, указывающее на то, что обслуживание мест должна возвращать только те места, которые открыты для бизнеса в момент отправки запроса. Места, в которых не указываются часы работы в базе данных Google Place, не будут возвращены, если вы включите этот параметр в свой запрос. УстановкаopenNow
вfalse
не имеет никакого эффекта. -
rankBy
( необязательно ) - указывает порядок, в котором перечислены результаты. Возможные значения:-
google.maps.places.RankBy.PROMINENCE
(по умолчанию). Этот вариант сортирует результаты на основе их важности. Рейтинг будет предпочтительными местами в радиусе сет по близлежащим местам, которые совпадают, но которые менее заметны. На известность может повлиять рейтинг места в индексе Google, глобальной популярности и других факторах. При указанииgoogle.maps.places.RankBy.PROMINENCE
требуется параметрradius
. -
google.maps.places.RankBy.DISTANCE
. Эта опция сортируется, что приводит к восходящему порядку на расстоянии от указанногоlocation
(требуется). Обратите внимание, что вы не можете указать пользовательскиеbounds
и/илиradius
, если вы указалиRankBy.DISTANCE
. Когда вы указываетеRankBy.DISTANCE
, требуется одно или несколькоkeyword
,name
илиtype
.
-
-
type
- ограничивает результаты местами, соответствующими указанному типу. Может быть указан только один тип (если предоставляется более одного типа, все типы, следующие за первой записью, игнорируются). Смотрите список поддерживаемых типов .
Вы также должны передавать метод обратного вызова в nearbySearch()
, чтобы обрабатывать объект результатов и google.maps.places.PlacesServiceStatus
.
var map; var service; var infowindow; function initialize() { var pyrmont = new google.maps.LatLng(-33.8665433,151.1956316); map = new google.maps.Map(document.getElementById('map'), { center: pyrmont, zoom: 15 }); var request = { location: pyrmont, radius: '500', type: ['restaurant'] }; service = new google.maps.places.PlacesService(map); service.nearbySearch(request, callback); } function callback(results, status) { if (status == google.maps.places.PlacesServiceStatus.OK) { for (var i = 0; i < results.length; i++) { createMarker(results[i]); } } }
Запросы на текстовый поиск
Служба поиска текстового поиска Google - это веб -сервис, который возвращает информацию о наборе мест, основанных на строке - например, «Пицца в Нью -Йорке» или «Обу обувные магазины возле Оттавы». Служба отвечает списком мест, соответствующих текстовой строке, и любым предвзятости местоположения, которое было установлено. Ответ поиска будет включать список мест. Вы можете отправить запрос информации о местах для получения дополнительной информации о любом из мест в ответе.
Текстовые поиски инициируются при вызове метода PlacesService
textSearch()
.
service = new google.maps.places.PlacesService(map); service.textSearch(request, callback);
Этот метод принимает запрос на следующих полях:
-
query
( требуется ) текстовая строка, на которой можно найти, например: «Ресторан» или «123 Main Street». Это должно быть название места, адрес или категория учреждений. Любые другие типы ввода могут генерировать ошибки и не гарантированно возвращать действительные результаты. Служба мест вернет матчи кандидатов на основе этой строки и заказывают результаты на основе их предполагаемой актуальности. Этот параметр становится необязательным, если параметрtype
также используется в запросе поиска. - Необязательно:
-
openNow
- логическое значение, указывающее на то, что служба мест должна возвращать только те места, которые открыты для бизнеса во время отправки запроса. Места, в которых не указываются часы работы в базе данных Google Place, не будут возвращены, если вы включите этот параметр в свой запрос. УстановкаopenNow
вfalse
не имеет никакого эффекта. -
minPriceLevel
иmaxPriceLevel
- ограничивает результаты только этими местами в пределах указанного уровня цен. Допустимые значения находятся в диапазоне от 0 (наиболее доступных) до 4 (наиболее дорогих), включительно. - Любой из:
-
bounds
, которые должны быть объектомgoogle.maps.LatLngBounds
, определяющий прямоугольную область поиска. Максимально поддерживаемое диагональное расстояние для области границ составляет приблизительно 100 000 метров. -
location
иradius
- вы можете сметить результаты до указанного круга, передаваяlocation
и параметрradius
. Это поручит услугу мест, чтобы предпочесть показать результаты в этом круге. Результаты за пределами определенной области все еще могут отображаться. Место занимает объектgoogle.maps.LatLng
, а радиус занимает простое целое число, представляющее радиус круга в метрах. Максимально допустимый радиус составляет 50 000 метров.
-
-
type
- ограничивает результаты местами, соответствующими указанному типу. Может быть указан только один тип (если предоставляется более одного типа, все типы, следующие за первой записью, игнорируются). Смотрите список поддерживаемых типов .
-
Вы также должны передать метод обратного вызова textSearch()
, чтобы обрабатывать объект результатов и google.maps.places.PlacesServiceStatus
.
var map; var service; var infowindow; function initialize() { var pyrmont = new google.maps.LatLng(-33.8665433,151.1956316); map = new google.maps.Map(document.getElementById('map'), { center: pyrmont, zoom: 15 }); var request = { location: pyrmont, radius: '500', query: 'restaurant' }; service = new google.maps.places.PlacesService(map); service.textSearch(request, callback); } function callback(results, status) { if (status == google.maps.places.PlacesServiceStatus.OK) { for (var i = 0; i < results.length; i++) { var place = results[i]; createMarker(results[i]); } } }
Поисковые ответы
Коды статуса
Объект ответа PlacesServiceStatus
содержит статус запроса и может содержать информацию о отладке, чтобы помочь вам отследить, почему пробел запрос места. Возможные значения статуса:
-
INVALID_REQUEST
: Этот запрос был недействительным. -
OK
: Ответ содержит допустимый результат. -
OVER_QUERY_LIMIT
: веб -страница прошла квоту запроса. -
REQUEST_DENIED
: веб -страница не разрешается использовать Placesservice. -
UNKNOWN_ERROR
: запрос Placesservice не может быть обработан из -за ошибки сервера. Запрос может преуспеть, если вы попробуете еще раз. -
ZERO_RESULTS
: для этого запроса не было найдено результата.
Поместите результаты поиска
Функции findPlace()
, nearbySearch()
и textSearch()
возвращают массив объектов PlaceResult
.
Каждый объект PlaceResult
может включать в себя следующие свойства:
-
business_status
указывает на оперативный статус этого места, если это бизнес. Он может содержать одно из следующих значений:-
OPERATIONAL
-
CLOSED_TEMPORARILY
-
CLOSED_PERMANENTLY
business_status
не возвращается. -
-
formatted_address
-это строка, содержащая читаемый на человеке адрес этого места. Свойствоformatted_address
возвращается только для текстового поиска .Часто этот адрес эквивалентен почтовому адресу. Обратите внимание, что некоторые страны, такие как Великобритания, не позволяют распределять истинные почтовые адреса из -за ограничений лицензирования.
Отформатированный адрес логически состоит из одного или нескольких компонентов адреса . Например, адрес «111 8th Avenue, Нью -Йорк, Нью -Йорк» состоит из следующих компонентов: «111» (номер улицы), «8 -я авеню» (маршрут), «Нью -Йорк» (город) и «Нью -Йорк "(штат США).
Не анализируйте форматированный адрес программно. Вместо этого вы должны использовать отдельные компоненты адреса, которые отвечает API в дополнение к полевому полю адреса.
-
geometry
: информация о геометрии места. Это включает в себя:-
location
обеспечивает широту и долготу этого места. -
viewport
определяет предпочтительный просмотр порта на карте при просмотре этого места.
-
-
permanently_closed
( устаревший ) является логическим флагом, указывающим, закрылось ли место либо навсегда, либо временно (значениеtrue
). Не используйтеpermanently_closed
. Вместо этого используйтеbusiness_status
, чтобы получить операционный статус предприятий. -
plus_code
(см. Код открытого местоположения и коды плюс ) - это ссылка на кодируемое местоположение, полученное из координат широты и долготы, которая представляет собой область: 1/8000 от степени на 1/8000 степени (около 14 мс 14 м на экваторе) или меньше. Плюс коды могут использоваться в качестве замены для уличных адресов в местах, где они не существуют (где здания не пронумерованы или улицы не названы).Код плюс отформатируется как глобальный код и составленный код:
-
global_code
- это 4 -код площадью 4 и 6 символов или более длинный локальный код (849VCWC8+R9). -
compound_code
- это 6 или более длинный локальный код с явным местоположением (CWC8+R9, Mountain View, CA, USA). Не программно разрабатывать этот контент.
-
-
html_attributions
: массив атрибутов, которые вы должны отображать при отображении результатов поиска. Каждая запись в массиве содержит текст HTML для одной атрибуции. Примечание. Это агрегация всех атрибутов для всего ответа на поиск. Таким образом, все объектыPlaceResult
в ответе содержат идентичные списки атрибуции. -
icon
возвращает URL для цветного значка PNG 71px x 71px. -
icon_mask_base_uri
Возвращает базовый URL для неяфкового икона, за исключением расширения .SVG или .PNG. -
icon_background_color
возвращает шестигранный код по умолчанию для категории места. -
name
: имя места. -
opening_hours
может содержать следующую информацию:-
open_now
- это логическое значение, указывающее, открыто ли место в текущее время ( устаревше в библиотеке мест, отображает API JavaScript, используйте вместо этогоutc_offset_minutes
).
-
-
place_id
- это текстовый идентификатор, который уникально идентифицирует место. Чтобы получить информацию о месте, передайте этот идентификатор в запросе деталей места . Узнайте больше о том, как ссылаться на место с идентификатором места . -
rating
содержит рейтинг места, от 0,0 до 5,0, на основе агрегированных обзоров пользователей. -
types
множества типов для этого места (например,["political", "locality"]
или["restaurant", "lodging"]
). Этот массив может содержать несколько значений или может быть пустым. Новые значения могут быть введены без предварительного уведомления. Смотрите список поддерживаемых типов . -
vicinity
: упрощенный адрес для этого места, включая название улицы, номер улицы и местность, но не провинция/штат, почтовый кодекс или страна. Например, Google в Сиднее, Австралийский офис имеетvicinity
ценность5/48 Pirrama Road, Pyrmont
.
Доступ к дополнительным результатам
По умолчанию каждый поиск места возвращает до 20 результатов за запрос. Тем не менее, каждый поиск может вернуть до 60 результатов, разделенных на три страницы. Дополнительные страницы доступны через объект PlaceSearchPagination
. Чтобы получить доступ к дополнительным страницам, вы должны захватить объект PlaceSearchPagination
с помощью функции обратного вызова. Объект PlaceSearchPagination
определяется как:
-
hasNextPage
Собственность логического, которое указывает, доступны ли дополнительные результаты.true
, когда есть страница дополнительных результатов. -
nextPage()
Функция, которая вернет следующий набор результатов. После выполнения поиска вы должны подождать две секунды, прежде чем будет доступна следующая страница результатов.
Чтобы увидеть следующий набор результатов, позвоните в nextPage
. Каждая страница результатов должна отображаться перед отображением следующей страницы результатов. Обратите внимание, что каждый поиск считается единым запросом по пределам использования.
Приведенный ниже пример демонстрирует, как изменить вашу функцию обратного вызова, чтобы захватить объект PlaceSearchPagination
, чтобы вы могли выпустить несколько запросов поиска.
Машинопись
// This example requires the Places library. Include the libraries=places // parameter when you first load the API. For example: // <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places"> function initMap(): void { // Create the map. const pyrmont = { lat: -33.866, lng: 151.196 }; const map = new google.maps.Map( document.getElementById("map") as HTMLElement, { center: pyrmont, zoom: 17, mapId: "8d193001f940fde3", } as google.maps.MapOptions ); // Create the places service. const service = new google.maps.places.PlacesService(map); let getNextPage: () => void | false; const moreButton = document.getElementById("more") as HTMLButtonElement; moreButton.onclick = function () { moreButton.disabled = true; if (getNextPage) { getNextPage(); } }; // Perform a nearby search. service.nearbySearch( { location: pyrmont, radius: 500, type: "store" }, ( results: google.maps.places.PlaceResult[] | null, status: google.maps.places.PlacesServiceStatus, pagination: google.maps.places.PlaceSearchPagination | null ) => { if (status !== "OK" || !results) return; addPlaces(results, map); moreButton.disabled = !pagination || !pagination.hasNextPage; if (pagination && pagination.hasNextPage) { getNextPage = () => { // Note: nextPage will call the same handler function as the initial call pagination.nextPage(); }; } } ); } function addPlaces( places: google.maps.places.PlaceResult[], map: google.maps.Map ) { const placesList = document.getElementById("places") as HTMLElement; for (const place of places) { if (place.geometry && place.geometry.location) { const image = { url: place.icon!, size: new google.maps.Size(71, 71), origin: new google.maps.Point(0, 0), anchor: new google.maps.Point(17, 34), scaledSize: new google.maps.Size(25, 25), }; new google.maps.Marker({ map, icon: image, title: place.name!, position: place.geometry.location, }); const li = document.createElement("li"); li.textContent = place.name!; placesList.appendChild(li); li.addEventListener("click", () => { map.setCenter(place.geometry!.location!); }); } } } declare global { interface Window { initMap: () => void; } } window.initMap = initMap;
JavaScript
// This example requires the Places library. Include the libraries=places // parameter when you first load the API. For example: // <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places"> function initMap() { // Create the map. const pyrmont = { lat: -33.866, lng: 151.196 }; const map = new google.maps.Map(document.getElementById("map"), { center: pyrmont, zoom: 17, mapId: "8d193001f940fde3", }); // Create the places service. const service = new google.maps.places.PlacesService(map); let getNextPage; const moreButton = document.getElementById("more"); moreButton.onclick = function () { moreButton.disabled = true; if (getNextPage) { getNextPage(); } }; // Perform a nearby search. service.nearbySearch( { location: pyrmont, radius: 500, type: "store" }, (results, status, pagination) => { if (status !== "OK" || !results) return; addPlaces(results, map); moreButton.disabled = !pagination || !pagination.hasNextPage; if (pagination && pagination.hasNextPage) { getNextPage = () => { // Note: nextPage will call the same handler function as the initial call pagination.nextPage(); }; } }, ); } function addPlaces(places, map) { const placesList = document.getElementById("places"); for (const place of places) { if (place.geometry && place.geometry.location) { const image = { url: place.icon, size: new google.maps.Size(71, 71), origin: new google.maps.Point(0, 0), anchor: new google.maps.Point(17, 34), scaledSize: new google.maps.Size(25, 25), }; new google.maps.Marker({ map, icon: image, title: place.name, position: place.geometry.location, }); const li = document.createElement("li"); li.textContent = place.name; placesList.appendChild(li); li.addEventListener("click", () => { map.setCenter(place.geometry.location); }); } } } window.initMap = initMap;
Попробуйте образец
Детали места
В дополнение к предоставлению списка мест в районе, служба мест может также вернуть подробную информацию о конкретном месте. Как только место будет возвращено в ответ на поиск места, его идентификатор места можно использовать для запроса дополнительной информации об этом месте, например, его полный адрес, номер телефона, рейтинг пользователей и отзывы и т. Д.
Разместите запросы сведений
Детали размещения запрашиваются при вызове метода сервиса getDetails()
.
service = new google.maps.places.PlacesService(map); service.getDetails(request, callback);
Этот метод принимает запрос, содержащий Placeid's placeId
, а поля, указывающие, какие типы данных о возврате мест. Узнайте больше о том, как ссылаться на место с идентификатором места .
Он также принимает метод обратного вызова, который должен обрабатывать код состояния, переданный в ответе google.maps.places.PlacesServiceStatus
, а также объект google.maps.places.PlaceResult
.
var request = { placeId: 'ChIJN1t_tDeuEmsRUsoyG83frY4', fields: ['name', 'rating', 'formatted_phone_number', 'geometry'] }; service = new google.maps.places.PlacesService(map); service.getDetails(request, callback); function callback(place, status) { if (status == google.maps.places.PlacesServiceStatus.OK) { createMarker(place); } }
Поля (поместите детали)
Параметрfields
принимает массив строк (имена поля). Используйте параметр fields
, чтобы указать массив типов данных места для возврата. Например: fields: ['address_components', 'opening_hours', 'geometry']
. Используйте точку при указании значений состава. Например: opening_hours.weekday_text
.
Поля соответствуют получению сведений о сведении и разделены на три категории выставления счетов: базовая, контактная и атмосфера. Основные поля выставляются по базовой ставке и не несут дополнительных сборов. Поля контактов и атмосферы выставлены по более высокой ставке. Смотрите ценовой лист для получения дополнительной информации. Атрибуты ( html_attributions
) всегда возвращаются с каждым вызовом, независимо от того, запросили ли он.
Базовый
Основная категория включает в себя следующие поля:
address_components
, adr_address
, business_status
, formatted_address
, geometry
, icon
, icon_mask_base_uri
, icon_background_color
, name
, permanently_closed
( устарел ), photo
, place_id
, plus_code
, type
, url
, utc_offset
( Deprected In The Place, Maps javas utc_offset_minutes
, vicinity
Контакт
Категория контактов включает в себя следующие поля:
formatted_phone_number
, international_phone_number
, opening_hours
, website
Атмосфера
Категория атмосферы включает в себя следующие поля: price_level
, rating
, reviews
, user_ratings_total
Узнайте больше о местах . Для получения дополнительной информации о том, как выставлены запросы на данные, см. Использование и выставление счетов .
Поместите детали ответов
Коды статуса
Объект ответа PlacesServiceStatus
содержит статус запроса и может содержать информацию отладки, чтобы помочь вам отследить, почему пробежал запрос информации о местах. Возможные значения статуса:
-
INVALID_REQUEST
: Этот запрос был недействительным. -
OK
: Ответ содержит допустимый результат. -
OVER_QUERY_LIMIT
: The webpage has gone over its request quota. -
NOT_FOUND
The referenced location was not found in the Places database. -
REQUEST_DENIED
: The webpage is not allowed to use the PlacesService. -
UNKNOWN_ERROR
: The PlacesService request could not be processed due to a server error. The request may succeed if you try again. -
ZERO_RESULTS
: No result was found for this request.
Place Details Results
A successful getDetails()
call returns a PlaceResult
object with the following properties:
-
address_components
: An array containing the separate components applicable to this address.Each address component typically contains the following fields:
-
types[]
is an array indicating the type of the address component. See the list of supported types . -
long_name
is the full text description or name of the address component as returned by the Geocoder. -
short_name
is an abbreviated textual name for the address component, if available. For example, an address component for the state of Alaska may have along_name
of "Alaska" and ashort_name
of "AK" using the 2-letter postal abbreviation.
Note the following facts about the
address_components[]
array:- The array of address components may contain more components than the
formatted_address
. - The array does not necessarily include all the political entities that contain an address, apart from those included in the
formatted_address
. To retrieve all the political entities that contain a specific address, you should use reverse geocoding, passing the latitude/longitude of the address as a parameter to the request. - The format of the response is not guaranteed to remain the same between requests. In particular, the number of
address_components
varies based on the address requested and can change over time for the same address. A component can change position in the array. The type of the component can change. A particular component may be missing in a later response.
-
-
business_status
indicates the operational status of the place, if it is a business. It can contain one of the following values:-
OPERATIONAL
-
CLOSED_TEMPORARILY
-
CLOSED_PERMANENTLY
business_status
is not returned. -
-
formatted_address
: The human-readable address of this place.Often this address is equivalent to the postal address. Note that some countries, such as the United Kingdom, do not allow distribution of true postal addresses due to licensing restrictions.
The formatted address is logically composed of one or more address components . For example, the address "111 8th Avenue, New York, NY" consists of the following components: "111" (the street number), "8th Avenue" (the route), "New York" (the city) and "NY" (the US state).
Do not parse the formatted address programmatically. Instead you should use the individual address components, which the API response includes in addition to the formatted address field.
-
formatted_phone_number
: The place's phone number, formatted according to the number's regional convention . -
geometry
: The place's geometry-related information. Это включает в себя:-
location
provides the latitude and longitude of the place. -
viewport
defines the preferred viewport on the map when viewing this place.
-
-
permanently_closed
( deprecated ) is a boolean flag indicating whether the place has shut down either permanently or temporarily (valuetrue
). Do not usepermanently_closed
. Instead, usebusiness_status
to get the operational status of businesses. -
plus_code
(see Open Location Code and plus codes ) is an encoded location reference, derived from latitude and longitude coordinates, that represents an area: 1/8000th of a degree by 1/8000th of a degree (about 14m x 14m at the equator) or smaller. Plus codes can be used as a replacement for street addresses in places where they do not exist (where buildings are not numbered or streets are not named).The plus code is formatted as a global code and a compound code:
-
global_code
is a 4 character area code and 6 character or longer local code (849VCWC8+R9). -
compound_code
is a 6 character or longer local code with an explicit location (CWC8+R9, Mountain View, CA, USA). Do not programmatically parse this content.
-
-
html_attributions
: Attribution text to be displayed for this place result. -
icon
: URL to an image resource that can be used to represent this place's type. -
international_phone_number
contains the place's phone number in international format. International format includes the country code, and is prefixed with the plus (+) sign. For example, theinternational_phone_number
for Google's Sydney, Australia office is+61 2 9374 4000
. -
name
: The place's name. -
utc_offset
Deprecated in the Places Library, Maps JavaScript API, useutc_offset_minutes
instead. -
utc_offset_minutes
contains the number of minutes this place's current timezone is offset from UTC. For example, for places in Sydney, Australia during daylight saving time this would be 660 (+11 hours from UTC), and for places in California outside of daylight saving time this would be -480 (-8 hours from UTC). -
opening_hours
contains the following information:-
open_now
( Deprecated in the Places Library, Maps JavaScript API; use opening_hours.isOpen() instead. See this video for how to useisOpen
with Place Details.) is a boolean value indicating whether the place is open at the current time. -
periods[]
is an array of opening periods covering seven days, starting from Sunday, in chronological order. Each period contains:-
open
contains a pair of day and time objects describing when the place opens:-
day
a number from 0–6, corresponding to the days of the week, starting on Sunday. For example, 2 means Tuesday. -
time
may contain a time of day in 24-hour hhmm format (values are in the range 0000–2359). Thetime
will be reported in the place's timezone.
-
-
close
may contain a pair of day and time objects describing when the place closes. Note: If a place is always open , theclose
section will be missing from the response. Applications can rely on always-open being represented as anopen
period containingday
with value 0 andtime
with value 0000, and noclose
.
-
-
weekday_text
is an array of seven strings representing the formatted opening hours for each day of the week. If alanguage
parameter was specified in the Place Details request, the Places Service will format and localize the opening hours appropriately for that language. The ordering of the elements in this array depends on thelanguage
parameter. Some languages start the week on Monday while others start on Sunday.
-
-
permanently_closed
( deprecated ) is a boolean flag indicating whether the place has shut down either permanently or temporarily (valuetrue
). Do not usepermanently_closed
. Instead, usebusiness_status
to get the operational status of businesses. -
photos[]
: an array ofPlacePhoto
objects. APlacePhoto
can be used to obtain a photo with thegetUrl()
method, or you can inspect the object for the following values:-
height
: the maximum height of the image, in pixels. -
width
: the maximum width of the image, in pixels. -
html_attributions
: Attribution text to be displayed with this place photo.
-
-
place_id
: A textual identifier that uniquely identifies a place and can be used to retrieve information about the place via a Place Details request . Learn more about how to reference a place with a place ID . -
rating
: The place's rating, from 0.0 to 5.0, based on aggregated user reviews. -
reviews
an array of up to five reviews. Each review consists of several components:-
aspects[]
contains an array ofPlaceAspectRating
objects, each of which provides a rating of a single attribute of the establishment. The first object in the array is considered the primary aspect. EachPlaceAspectRating
is defined as:-
type
the name of the aspect that is being rated. The following types are supported:appeal
,atmosphere
,decor
,facilities
,food
,overall
,quality
andservice
. -
rating
the user's rating for this particular aspect, from 0 to 3.
-
-
author_name
the name of the user who submitted the review. Anonymous reviews are attributed to "A Google user". If a language parameter was set, then the phrase "A Google user" will return a localized string. -
author_url
the URL to the users Google+ profile, if available. -
language
an IETF language code indicating the language used in the user's review. This field contains the main language tag only, and not the secondary tag indicating country or region. For example, all the English reviews are tagged as 'en', and not 'en-AU' or 'en-UK' and so on. -
rating
the user's overall rating for this place. This is a whole number, ranging from 1 to 5. -
text
the user's review. When reviewing a location with Google Places, text reviews are considered optional; therefore, this field may by empty.
-
-
types
An array of types for this place (eg,["political", "locality"]
or["restaurant", "lodging"]
). This array may contain multiple values, or may be empty. New values may be introduced without prior notice. See the list of supported types . -
url
: URL of the official Google page for this place. This is the Google-owned page that contains the best available information about the place. Applications must link to or embed this page on any screen that shows detailed results about the place to the user. -
vicinity
: A simplified address for the place, including the street name, street number, and locality, but not the province/state, postal code, or country. For example, Google's Sydney, Australia office has avicinity
value of5/48 Pirrama Road, Pyrmont
. Thevicinity
property is only returned for a Nearby Search . -
website
lists the authoritative website for this place, such as a business' homepage.
Note: Multidimensional ratings may not be available for all locations. If there are too few reviews then the details response will either include a legacy rating on a 0.0 to 5.0 scale (if available) or no rating at all.
Referencing a Place with a Place ID
A place ID is a unique reference to a place on a Google Map. Place IDs are available for most locations, including businesses, landmarks, parks, and intersections.
To use a place ID in your app you must first look up the ID, which is available in PlaceResult
of a Place Search or Details request. You can then use this place ID to look up Place Details .
Place IDs are exempt from the caching restrictions stated in Section 3.2.3(b) of the Google Maps Platform Terms of Service. You can therefore store place ID values for later use. For best practises when storing place IDs, see the place ID overview .
var map; function initialize() { // Create a map centered in Pyrmont, Sydney (Australia). map = new google.maps.Map(document.getElementById('map'), { center: {lat: -33.8666, lng: 151.1958}, zoom: 15 }); // Search for Google's office in Australia. var request = { location: map.getCenter(), radius: '500', query: 'Google Sydney' }; var service = new google.maps.places.PlacesService(map); service.textSearch(request, callback); } // Checks that the PlacesServiceStatus is OK, and adds a marker // using the place ID and location from the PlacesService. function callback(results, status) { if (status == google.maps.places.PlacesServiceStatus.OK) { var marker = new google.maps.Marker({ map: map, place: { placeId: results[0].place_id, location: results[0].geometry.location } }); } } google.maps.event.addDomListener(window, 'load', initialize);
Place Photos
The Place Photo feature allows you to add high quality photographic content to your site. The Photo service gives you access to the millions of photos stored in the Places and Google+ Local database. When you get place information using a Place Details request, photo references will be returned for relevant photographic content. The Nearby Search and Text Search requests also return a single photo reference per place, when relevant. Using the Photo service you can then access the referenced photos and resize the image to the optimal size for your application.
An array of PlacePhoto
objects will be returned as part of the PlaceResult
object for any getDetails()
, textSearch()
or nearbySearch()
request made against a PlacesService
.
Note: The number of photos returned varies by request.
- A Nearby Search or a Text Search will return at most one
PlacePhoto
object. - A Details request will return up to ten
PlacePhoto
objects.
You can request the URL for the associated image by calling the PlacePhoto.getUrl()
method, and passing a valid PhotoOptions
object. The PhotoOptions
object allows you to specify the maximum desired height and width of the image. If you specify a value for both maxHeight
and a maxWidth
, the photo service will resize the image to the smaller of the two sizes, while maintaining the original aspect ratio.
The following code snippet accepts a place object, and adds a marker to the map if a photo exists. The default marker image is replaced by a small version of the photo.
function createPhotoMarker(place) { var photos = place.photos; if (!photos) { return; } var marker = new google.maps.Marker({ map: map, position: place.geometry.location, title: place.name, icon: photos[0].getUrl({maxWidth: 35, maxHeight: 35}) }); }
Photos returned by the Photo service are sourced from a variety of locations, including business owners and user contributed photos. In most cases, these photos can be used without attribution, or will have the required attribution included as a part of the image. However, if the returned photo
element includes a value in the html_attributions
field, you must include the additional attribution in your application wherever you display the image.