Mapbox 不 适合 它 的 容器 。 为什么 不 ?
这 是 呈现 的 html :
<div class="map mapboxgl-map" id="mapBox">
<div class="mapboxgl-canvas-container">
<canvas class="mapboxgl-canvas" style="position: absolute; width: 1920px; height: 277px;" tabindex="0" aria-label="Map" width="1920" height="277">
</canvas>
</div>
</div>
中 的 每 一 个
我 猜 这些 277px
是 默认 值 。
这 是 js :
mapboxgl.accessToken = 'blabla';
var map = new mapboxgl.Map({
container: 'mapBox',
style: 'mapbox://styles/mapbox/streets-v11',
center: [-77.04, 38.907],
zoom: 11.15
});
格式
这 是 scss :
.map {
grid-column: 1/-1;
height: 100%;
position: relative;
canvas, .mapboxgl-canvas {
height: 100%;
}
}
格式
如果 我 把 曾经 非常 著名 的 !important
添加 到 height: 100%;
中 , 那么 它 就 能 工作 , 但 Map 被 拉 伸 了 。
我 为什么 要 这么 做 ?
8条答案
按热度按时间l2osamch1#
我 找到 窍门 了 。
只是 添加 了
中 的 每 一 个
这样 Map 将 根据 其 容器 大小 调整 大小
w8f9ii692#
经过 几 个 小时 的 努力 , 我 终于 明白 了 如何 让 Mapbox 适合 它 的 容器 。 要 让 Mapbox 适合 它 的 容器 , 而 不 需要 设置 绝对 高度 , 它 必须 是 父 div 的 第 一 个 直接 子 元素 。 Mapbox 不能 是 第 二 个 , 第 三 个 或 第 四 个 子 元素 , 等等 。 为什么 ? 我 的 猜测 是
mapbox-gl.css
与 自 定义 的 css 规则 冲突 。中 的 每 一 个
格式
格式
# # 2021 年 更新
我 在 一 个 新 的 项目 中 使用 mapbox , 据 我 所 知 , mapbox 不 需要 它 的 父 容器 有 任何 css 来 工作 。
格式
格式
nwsw7zdq3#
将此添加到您的CSS
和
{ position: relative }
添加到其父divuttx8gqw4#
这个对我很有效。它需要一段时间才能生效,但它是值得的。
hpcdzsge5#
# 没有 绝对 定位 的 纯 CSS 解决 方案 。
# # # 新 方法 :
添加 到 Package 器 :
中 的 每 一 个
如果 您 想要 矩形 ( 例如 :
.9
) 的 数据 。# # # 旧 方法 :
每个 父 容器 的 高度 必须 大于 0 。 检查 您 的 dev 检查 器 。 为 每个 呈现 高度 为 0 的 容器 添加
height: 100%;
。 然后 为 您 的 map Package 器 添加 以下 两 个 CSS 声明 :格式
改变 500 到 任何 工程 在 您 的 媒体 查询 , 你 应该 是 好 的 。
w41d8nur6#
jk9hmnmh7#
2022
1-更新Map脚本add
map.resize()
2-更新您的html添加tailwind
class="aspect-square w-full h-full"
或添加style="aspect-ratio: 1 / 1"
:umuewwlo8#
我 找到 的 唯一 可靠 的 方法 是 使用 jQuery 。 在 我 的 例子 中 , Map 位于 页面 加载 时 不 活动 的 标签 中 , 所以 我 在 切换 到 保存 Map 的 标签 时 执行 代码 。
中 的 每 一 个
编辑 : 那 很 好 用 , 但是 Map 看 起来 很 丑 , 像 素 化 了 。 我 很 可能 会 回到 谷歌 Map 。