4

我使用语义反应 ui 作为 ui 库和反应映射 gl 在我的反应应用程序中呈现地图。但是从 react-map-gl 渲染的地图并没有占据列的整个宽度。请在下面找到图片: 在此处输入图像描述

虚线表示列。地图仍有足够的宽度来拉伸。但根据文档,我们必须以像素为单位提供地图的宽度和高度。

容器代码如下:

    render() {
    return (
        <Grid style={{ padding: '20px' }}>
            <Grid.Row>
                <Grid.Column mobile={16} computer={12} style={{ border: 'dotted', paddingLeft: 0 }}>
                    <PincodesMap
                        viewPort={this.props.viewPort}
                        handleViewportChange={this.handleViewportChange.bind(this)}
                    />
                </Grid.Column>
                <Grid.Column mobile={16} computer={4} style={{ border: 1 }}>
                    This is test
                </Grid.Column>
            </Grid.Row>
        </Grid>
    );
}

而保存地图的组件如下所示:

import React from 'react';
import ReactMapGL from 'react-map-gl';

const PincodesMap = ({ viewPort, handleViewportChange }) => (
    <ReactMapGL
        {...viewPort}
        mapStyle="mapbox://styles/mapbox/dark-v9"
        mapboxApiAccessToken="key"
        onViewportChange={handleViewportChange}
    />
);

export default PincodesMap;

地图的视口代码如下:

viewPort: {
        width: 800,
        height: 800,
        latitude: 21.1458,
        longitude: 79.0882,
        zoom: 4
    }

我们无法提供百分比宽度。我们如何让它看起来全宽?另外,如何在手机上自动调整地图大小?

谢谢

4

5 回答 5

4

这对我有用:

viewport: {
  width: "fit",
  ...
},
<ReactMapGL
  onViewportChange={nextViewport =>
    this.setState({ viewport: { ...nextViewport, width: "fit" } })
  }
...
>
于 2020-08-03T15:55:13.210 回答
3

使用react-map-gl5.2.3 版本,当我使用width: '100%', height: '100%'.

我可以使用“vw”/“vh”单位来代替百分比单位,如下所示width: '100vw', height: '100vh'这是react-map-gl repo的文档示例中当前显示的语法样式。

回购示例直接使用宽度/高度道具,但在viewPort对象中它看起来像:

viewPort: {
  width: '100vw',
  height: '100vh',
  latitude: 21.1458,
  longitude: 79.0882,
  zoom: 4
}

希望对某人有所帮助。

于 2020-04-25T18:39:43.097 回答
1

您应该能够以百分比形式提供宽度。只要确保它是一个字符串。

viewPort: {
    width: "100%",
    height: "100%",
    latitude: 21.1458,
    longitude: 79.0882,
    zoom: 4
}
于 2019-01-18T16:15:10.353 回答
1

对我来说,使用react-map-gl@5.2.3,我无法将宽度和高度指定为100%。尽管指定100vh有效,但在移动设备上存在问题。

我通过指定viewport如下解决了这个问题

  viewport: {
    latitude: 0,
    longitude: 0,
    zoom: 1,
    height: window.innerHeight,
    width: window.innerWidth,
  }
于 2020-04-29T12:47:34.670 回答
0

尝试添加width="100vw" height="100vh"道具。

<ReactMapGL
        {...viewPort}
        width="100vw"
        height="100vh"
        mapStyle="mapbox://styles/mapbox/dark-v9"
        mapboxApiAccessToken="key"
        onViewportChange={handleViewportChange}
    />

于 2022-01-23T16:05:08.773 回答