Вот как я работал с Gatsby (версия 1):
- Я определил функцию с именем
initMap
до определения моего компонента React (в данном случае моей страницы), например
if (typeof window !== 'undefined') {
window.initMap = function() {
new window.google.maps.Map(document.getElementById('map'), {
center: { lat: 40, lng: 10 },
zoom: 5,
})
}
}
ПРИМЕЧАНИЕ: if (typeof window !== 'undefined')
существует, чтобы избежать нарушения рендеринга на стороне сервера.Во время ssr окно не определено и выдает ошибку, если вы не включите этот код в оператор if
.
Используя
react-helmet
Я вставил тег скрипта Google Maps в свой веб-сайт
<Helmet>
<script src="https://maps.googleapis.com/maps/api/js?key=MY_KEY&callback=initMap" async defer />
</Helmet>
Вот и все.Когда скрипт загружается (асинхронно), он вызывает обратный вызов initMap
и отображает карту внутри div с идентификатором map
.
[EDIT] Это здорово, если выпросто хотите отобразить карту и, возможно, какой-нибудь статический маркер и информационное окно на ней.Но если вам нужно добавить к нему динамический контент, возможно, ваши маркеры зависят от некоторых фильтров, я бы порекомендовал https://tomchentw.github.io/react-google-maps