一个WebGL JavaScript交互式地图库,可以渲染Mapbox Vector Tiles。
Mapbox 不适合它的容器。为什么不呢? 这是渲染后的 html: 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.on('load', function () { map.resize(); }); 到 js,这样地图就会根据其容器调整大小 经过几个小时的尝试找到解决方案并在 SO 上尝试解决方案后,我终于明白了如何使 Mapbox 适合其容器。要使 mapbox 适合其容器,而不需要设置绝对高度,它必须是父 div 的直接第一个子级。 Mapbox 不能是第二个、第三个或第四个孩子等。为什么?我的猜测是 mapbox-gl.css 与自定义 CSS 规则发生冲突。 这每次都有效: <section class="map_box_container"> <!--MAP--> <div id='map'></div> </section> 这永远行不通: <section class="map_box_container"> <div class="second_child"> <!--MAP--> <div id='map'></div> </div> </section> CSS .map_box_container{ position: relative; height: 100% !important; width: 100% !important; } #map { position: absolute; top: 0; bottom: 0; width: 100%; } 2021 年更新 我在一个新项目中使用mapbox,据我了解,mapbox 不需要其父容器具有任何CSS 才能工作。 HTML <section class="map_box_container"> <!--MAP--> <div id='map'></div> </section> CSS #map { position: absolute; top: 0; bottom: 0; width: 100%; } 这对我有用,并且在调整大小之前您不会像在接受的答案中那样看到明显的滞后: document.addEventListener("DOMContentLoaded", () => map.resize()); 将其添加到你的CSS中 .mapboxgl-map { position: absolute; top: 0; bottom: 0; width: 100%; } 和 { position: relative } 到其父 div 这个对我有用。虽然需要一段时间才能生效,但这是值得的。 map.on('load', function() { $('.mapboxgl-canvas').css('width', '100%'); $('.mapboxgl-canvas').css('height', '100%'); map.resize(); }); 没有绝对定位的纯 CSS 解决方案。 新方法: 添加到你的包装纸中: aspect-ratio: 1 / 1; 如果您想要一个矩形,请使用该值(例如:.9)。 旧方法: 每个父级的高度必须大于 0。请检查您的开发检查器。对于每个渲染高度为 0 的容器添加 height: 100%;。然后为您的地图包装器添加这两个 CSS 声明: height: 100%; max-height: 500px; 将 500 更改为在您的媒体查询中有效的任何内容,您应该会很好。 const [viewport, setViewport] = useState({ width: '100%', height: 'calc(100vh - 162px)', // 162px is size height of all elements at the top of the map latitude: 0, longitude: 0, zoom: 12, bearing: 0, pitch: 0, transitionDuration: 2000, transitionInterpolator: new FlyToInterpolator(), }); 2022 1- 更新您的地图脚本添加 map.resize() <script> map.on("load", () => {map.resize() </script> 2- 更新您的 html 添加 tailwind class="aspect-square w-full h-full" 或添加 style="aspect-ratio: 1 / 1": <div id="map" class="aspect-square w-full h-full" style="aspect-ratio: 1 / 1;" > </div> 对于使用react-map的人(也许还有其他人),这是我解决问题的方法: <div className="flex flex-col min-h-screen" /> <h1> Hey!</h1> <Map style={{ width: '100vw', height: 'inherit', flexGrow: 1 }} /> </div> 对我来说,关键是通过将其设置为继承来杀死 Mapbox 中的 height: 100%。 注意:我使用的是 Tailwind。 我发现的唯一可靠的方法是使用 jQuery。就我而言,地图位于页面加载时不活动的选项卡中,因此我在切换到保存地图的选项卡时执行代码。 var $ = window["$"]; $('.mapboxgl-canvas').css('width', '100%'); $('.mapboxgl-canvas').css('height', '100%'); 编辑:这可行,但地图看起来很丑而且像素化。我可能会回到 Google 地图。
React-map-gl(GeoJSON 地图示例):地图中的数据未通过控制面板(年份滑块)更新
我正在尝试从这里实现 GeoJSON 示例:https://uber.github.io/react-map-gl/#/Examples/geo 但是当我尝试逐年更改年份滑块时,数据和数据层仍然是
“错误:已经存在具有此 ID 的源(匿名函数)”是什么意思? (反应,MapboxGL)
我有一个小地图应用程序。当用户单击搜索按钮时,我希望地图放大到地图上的特定区域并出现一个框。我收到错误消息说已经有一个 sou...
我正在使用mapbox-gl-js创建一个应用程序,它有很多层。用户可以选择显示/隐藏这些层。 就性能而言,(1)一次创建所有图层并显示/...
在addLayer“布局”中获取自定义属性 - 有选择地工作
我正在使用 Mapbox GL JS 创建带有旅行旅游的自定义地图,但出现以下“奇怪”错误: 这是我的“代码”: const TransportIconGeoJsonData = { '类型':'
在模态中使用 Mapbox 时,如何解决未捕获(承诺中)类型错误:无法读取 null 的属性(读取“setAttribute”)?
我试图将输入地址自动填充合并到模态中。出现自动填充建议,但是当我尝试单击/选择首选地址时,发生错误并且模式关闭...
Mapbox/Maplibre 光线投射仅包含投影矩阵和地理参考对象
我想这可以被认为是这个问题的延续,所以请检查一下有关他的问题的上下文,尤其是上述问题中报告的 JSFiddle。 我基本上正在努力实现...
具有 URL 限制的 MapboxGL 访问令牌返回 403 Forbidden
我们使用mapboxGL JS v1.8作为一个简单的单页商店定位器,加载mapbox地图和各个位置的标记。直到昨天 12 月 20 日,我使用了在 Mapbox 上创建的访问令牌...
我有一个使用mapbox gl的React组件...该组件返回几个我自己的React组件,这些组件通常在mapbbox-gl地图之上渲染。但是,当我使用全屏控制去
我有一组多边形,我想在它们周围绘制尽可能小的多边形(它必须是矩形,所有内角均为 90 度)。 为了实现这一点,我使用了 bboxPolygon 函数...
如何使用 [email protected] 实现 mapbox-gl-geocoder 插件
mapbox-gl-geocoder 不再维护了吗?我在这里看到的活动很少:https://github.com/mapbox/mapbox-gl-geocoder。有没有我还没找到的更新的替代品? 我正在迁移我的项目...
我正在使用 Rmarkdown 与 mapdeck 一起制作报告,mapdeck 使用 javascript 库(deckgl、mapboxgl 等)来创建地图。 生成地图对象后,我可以滚动和缩放并检查......
我使用mapbox-gle-draw在地图上创建多边形,默认行为创建一个中点,允许我稍后单击它添加新点 我想禁用默认行为并...
警告:活动的 WebGL 上下文过多。最旧的上下文将丢失(Mapbox+React+Marzipano)
我们在我们的一个项目中将 marzipano 与 Mapbox 一起使用,我们用来在地图上显示点,单击任何点我们将在 marzipano 的帮助下显示 360 度图像。我们需要单击
我正在开发一个带有标记的交互式地图。但是,我面临一个问题,即在高缩小级别下,地图开始重复自身,导致我的标记由于重复而重复
以下代码片段在 Chrome 上完美运行,显示搜索栏以自动填充地址结果。不幸的是,Safari(我的例子是17.5)无法识别mapboxGeocoder对象上的.on方法。是
有没有办法在mapboxGL JS或Studio中创建渐变背景?有一个线性渐变的道具,但我找不到任何有关多边形渐变的信息。 作为背景图层或
Mapbox GL JS / Maplibre:有关子属性的样式集群
我有一个 geojson 数据集,其属性“status”的值为 active 或 inactive。我想从这个数据集中创建一个集群图层。这些簇应该具有不同的颜色
无法解析 com.mapbox.maps:android:10.17.0
我该如何修复这个错误??? 几天来我一直在寻找这个错误的解决方案。文档非常差。有人可以帮忙吗 它不是在 Android 上构建的 * 什么地方出了错: > 无法...
我正在设置一张地图,其中商店位置更接近用户的当前位置。但我无法完成那件事。我浏览了文档,但找不到任何东西