我正在使用@react-google-maps/API在Next JS应用程序中使用谷歌Map。
根据他们的文档,他们提到父HTML元素可以决定Map的大小。
我的组件返回函数如下所示:
return (
<div
style={{
display: "flex",
flexDirection: "column",
height: "100vh",
width: "100%",
}}
>
<GoogleMap
options={mapOptions}
zoom={mapOption.zoom}
center={mapCenter}
mapTypeId={google.maps.MapTypeId.ROADMAP}
mapContainerStyle={{width: "300px",height: "300px"}}
onLoad={() => console.log("Map Component Loaded...")}
/>
</div>
)
所以基本上我需要确定Map的宽度和高度,如果我想让它充满整个屏幕,那么通过父项,它将被覆盖。问题是上面的返回仍然显示300到300像素的Map。有人有什么解决方案,使初始Map充满整个屏幕吗?
1条答案
按热度按时间igetnqfo1#
MapContainerStyle是div容器的子级
这是因为
<GoogleMap />
属性mapContainerStyle
也是一个单独的容器,并且只是<div>
容器外部的一个子容器,您将style
属性放在该容器中。因此,尽管你设置了
<div>
容器100%的宽度和高度,或者100 vh/vw,如果它的子组件得到了一个较低的宽度和高度,特别是因为你在这里使用的是像素,当然它会显示为只有300 px的宽度和高度。下面是一个例子:
请注意,
<div>
容器具有绿色背景和500 px的高度/宽度,显示它包含这里提供的mapContainerStyle
,我将宽度和高度设置为50%。所以如果你想填充500 px的
<div>
容器,你只需要将mapContainerStyle
的高度和宽度设置为100%。为了回答你的问题,你可以让你的
<div>
容器不做任何样式,然后把mapContainerStyle
的宽度和高度设置为100%,或者你可以根据你的用例,把你的<div>
容器设置为你的示例,但是这里有两个示例。不带
<div>
样式:使用
<div>
样式:希望这对你有帮助!如果你需要澄清或者我误解了你的问题,请随时留下评论。但现在我只能说这么多了。