刚开始使用react-google-maps
,想知道在使用withScriptsjs
HOC 时需要使用哪些属性 loadingElement、containerElement 和 mapElement。如示例所示,它们是否严格用于样式?同样,我不确定这些属性的用途。
1 回答
这个答案是关于与HOCcontainerElement
相关联的andmapElement
道具。withGoogleMap
如果您不包含containerElement
ormapElement
道具(在此 CodeSanbox 演示应用程序中对其进行测试),您将收到以下错误:
缺少必需的道具 containerElement 或 mapElement。您需要同时提供它们。该
google.maps.Map
实例将在 mapElement 上初始化,并由 containerElement 包装。您需要同时提供它们,因为 Google 地图要求 DOM 在初始化时具有高度。
在我看来,mapElement
prop 用于指定地图也将附加的 HTML 元素。
在一个简单的 Vanilla JavaScript 示例(取自 Google 地图文档)中,这由以下代码表示:
var map;
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
center: {lat: -34.397, lng: 150.644},
zoom: 8
});
}
构造函数的第一个参数google.maps.Map
是要在其中创建新地图的 DOM 元素。在 JS 示例中,这是在body 标记 ( )内div
带有id
"map"的元素。<div id="map"></div>
至于containerElement
prop:同一个 JS 示例没有明确指定容器元素,因为我相信body
andhtml
元素被假定为容器。这就是 CSS 为它们指定高度的原因:
html, body {
height: 100%;
margin: 0;
padding: 0;
}
这与我上面分享的错误的以下部分有关:
... Google Map 要求 DOM 在初始化时具有高度。
如果您height: 100%
从 JS 示例中删除 CSS 规则(尝试在此 JSBin中将其从 CSS 中删除),地图将不再显示。这可能相当于移除containerElement
道具。
关于loadingElement
道具,我不确定那是什么...... :)