Чтобы добавить библиотеку локального контекста в свой проект, запустить и настроить режим карты с отображением локального контекста, выполните описанные ниже действия.
Как включить необходимые API и SDK
Чтобы использовать библиотеку локального контекста, необходимо включить Maps JavaScript API и Places API. Для этого выполните инструкции по включению одного или нескольких API или SDK Обратите внимание, что оба API нужно включить в одном проекте в Google Cloud Console.
Как загрузить библиотеку локального контекста
Загрузите Maps JavaScript API обычным образом и укажите следующие параметры:
libraries=localContext
используется для загрузки библиотеки локального контекста;v=beta
является обязательным для использования этого выпуска;key
содержит ключ API;callback
выполняет функциюinitMap()
.
В следующем примере показан тег скрипта со всеми описанными выше параметрами:
<script async
src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=localContext&v=beta&callback=initMap">
</script>
Как создать новый режим карты с локальным контекстом
Чтобы добавить библиотеку локального контекста на веб-страницу, сначала создайте экземпляр LocalContextMapView
и задайте нужные свойства:
element
– элементdiv
, в котором нужно показать карту (в данном случае он называется "map").placeTypePreferences
– типы мест, которые должна вернуть библиотека локального контекста (до 10).maxPlaceCount
– максимальное число мест, которое можно показать (от 1 до 24).locationRestriction
(необязательный) – ограничивает поиск по местам определенным местоположением. По умолчанию соответствует видимой области карты.
После получения экземпляра LocalContextMapView
вы можете задать параметры карты для внутреннего экземпляра Map
. Карта, которую содержит LocalContextMapView
, поддерживает те же параметры карты, что и стандартная карта Maps JavaScript API. В следующем примере показано, как создать новый экземпляр LocalContextMapView
и задать несколько параметров для внутреннего объекта Map
:
TypeScript
let map: google.maps.Map; function initMap() { const localContextMapView = new google.maps.localContext.LocalContextMapView({ element: document.getElementById("map"), placeTypePreferences: [ { type: "restaurant" }, { type: "tourist_attraction" }, ], maxPlaceCount: 12, }); map = localContextMapView.map!; map.setOptions({ center: { lat: 51.507307, lng: -0.08114 }, zoom: 14, }); } declare global { interface Window { initMap: () => void; } } window.initMap = initMap;
JavaScript
let map; function initMap() { const localContextMapView = new google.maps.localContext.LocalContextMapView({ element: document.getElementById("map"), placeTypePreferences: [ { type: "restaurant" }, { type: "tourist_attraction" }, ], maxPlaceCount: 12, }); map = localContextMapView.map; map.setOptions({ center: { lat: 51.507307, lng: -0.08114 }, zoom: 14, }); } window.initMap = initMap;
Как отложить загрузку данных локального контекста
Вы можете отложить загрузку данных локального контекста при инициализации, установив для параметра LocalContextMapView
maxPlaceCount
значение 0. Это удобно в ситуациях, когда нужно подождать, пока пользователи будут готовы увидеть данные. Когда уже можно загружать данные локального контекста, задайте для параметра maxPlaceCount
значение 1 или больше. В следующем примере показано, как выполнить инициализацию карты без загрузки данных локального контекста, а затем задать maxPlaceCount
, чтобы загрузить данные:
// Initialize without Local Context data.
const localContextMapView = new google.maps.localContext.LocalContextMapView({
element: document.querySelector('#map'),
placeTypePreferences: ['restaurant'],
maxPlaceCount: 0, // Avoids an automatic call to load places during initialization.
});
//...
// Show places now.
localContextMapView.maxPlaceCount = 12;
Как включить и отключить интерфейс локального контекста
Вы можете отключить отображение элементов интерфейса локального контекста, задав для параметра LocalContextMapView
maxPlaceCount
значение 0. Чтобы снова показать их, задайте для параметра maxPlaceCount
значение 1 или больше.
Как задать минимальные размеры карты
Библиотека локального контекста адаптивно подстраивает область отображения в зависимости от отрисованного размера LocalContextMapView
. Минимальные поддерживаемые размеры для LocalContextMapView
:
- 300 x 480 пикселей (вертикальное расположение);
- 480 x 380 пикселей (горизонтальное расположение).
Если элемент, содержащий LocalContextMapView
, становится меньше минимальных поддерживаемых размеров, элементы библиотеки локального контекста, в том числе средства выбора места и объекты инфраструктуры, скрываются.
Масштаб браузера влияет на минимальные поддерживаемые размеры. Например, если окно браузера увеличено до 200 %, минимальные поддерживаемые размеры будут составлять 600 x 960 пикселей в вертикальном расположении и 960 x 760 пикселей в горизонтальном.
Рекомендации по CSS
Классы CSS в DOM библиотеки локального контекста не входят в общедоступный API, и настройка стиля, изменение и выбор элементов в DOM библиотеки локального контекста не поддерживаются. Настоятельно рекомендуем соблюдать следующие рекомендации, чтобы избежать конфликтов стилей DOM и обеспечить правильное отображение объектов библиотеки локального контекста на карте:
- Не используйте классы CSS библиотеки локального контекста, поскольку разработчики могут их изменить без уведомления.
- Не настраивайте стиль, не изменяйте и не выбирайте элементы в DOM библиотеки локального контекста.
Если вы используете фреймворк CSS, который вносит такие изменения, возможно, вы сможете избежать конфликтов стиля.
Например, если вы хотите установить для всей страницы параметр box-sizing
равным border-box
:
- Используйте переопределение
box-sizing
, которое задает для элемента<html>
значениеborder-box
. - Используйте
box-sizing: initial
для элемента, который содержит представление карты с отображением локального контекста. - Для все остальных элементов установите
box-sizing: inherit
.
В таком случае в DOM библиотеки локального контекста для параметра box-sizing
будет установлено стандартное значение с селектором низкой специфичности.
Код для этого примера будет выглядеть следующим образом:
html {
box-sizing: border-box;
}
*, *::before, *::after {
box-sizing: inherit;
}
.container-for-google-maps {
box-sizing: initial;
}