首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使deck.gl和gl正确显示?

如何使deck.gl和gl正确显示?
EN

Stack Overflow用户
提问于 2021-09-14 14:43:39
回答 1查看 1.4K关注 0票数 1

下面是一个代码沙箱示例中,我试图在特定组件中显示一个映射。但是,我不能得到的deck.gl和反应-地图-gl div生活在他们的父母.相反,它们会扩散到文档体的范围。

该示例的基本布局如下:

代码语言:javascript
复制
        <Box id='mapcontainer'>
            <DeckGL id="deck-gl">
                <MapView id="map"  >
                    <StaticMap/>
                </MapView>
            </DeckGL>
        </Box>

看来,Deck.gl正在创建一个<div>和一个<canvas>元素,它位于<Box id='mapcontainer'> div和<DeckGL id='deck-gl'> div之间,而我无法让div和画布驻留在它们的父Box中。

id<div><canvas>似乎是从分别传递到DeckGL组件、id="deck-gl-wrapper"id="deck-gl"的id创建的。其中"deck-gl"是我传递给<deckGL>组件的id

这可能是实际问题,也可能不是问题,但使用devtools中的元素检查器,这是我现在最好的猜测。

有人能帮我弄清楚为什么deck.gl和react gl组件不在父边界内吗?即使当我在parent组件中设置canvas和/或canvas道具时?

文件链接:

反应图-gl

deck.gl

在上面链接的代码框中包含了一个功能示例。我已经包括了许多我尝试过的评论,但到目前为止没有运气。

https://codesandbox.io/s/deck-gl-and-mui-react-e3t23?file=/src/App.js

谢谢..。

对于本地快速引用,app.js文件如下所示。

代码语言:javascript
复制
import Box from "@material-ui/core/Box";
import DeckGL from "@deck.gl/react";
import { MapView } from "@deck.gl/core";
import { LineLayer } from "@deck.gl/layers";
import { StaticMap } from "react-map-gl";

const MAPBOX_ACCESS_TOKEN = <tokenInCodeSandboxIfYouNeedIt>

const INITIAL_VIEW_STATE = {
    longitude: -122.41669,
    latitude: 37.7853,
    zoom: 13,
    pitch: 0,
    bearing: 0
};

const data = [
    {
        sourcePosition: [-122.41669, 37.7853],
        targetPosition: [-122.41669, 37.781]
    }
];

function App() {
    return (
        <Box
            id='mapcontainer'
            sx={{
                border: 1,
                height: 450,
                width: "auto",
                m: 5
            }}
        >
            <DeckGL
                initialViewState={INITIAL_VIEW_STATE}
                controller={true}
                id="deck-gl"
            >
                <LineLayer id="line-layer" data={data} />
                <MapView
                    id="map"
                    controller={false}
                >
                    <StaticMap
                        mapStyle="mapbox://styles/mapbox/dark-v9"
                        mapboxApiAccessToken={MAPBOX_ACCESS_TOKEN} 
                    />
                </MapView>
            </DeckGL>
        </Box>
    );
}

export default App;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-14 17:09:47

为了允许deck.gl组件占用父组件的可用空间,您可以使用映射容器的id将position: 'relative'添加到您的Box的重写中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69179876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档