当前位置: 首页 > 知识库问答 >
问题:

React.js和Mapbox:使用react.js时,mapbox地图无法正确渲染

晏修诚
2023-03-14

我正在学习使用react和mapbox,但是我很难理解为什么我的mapbox贴图在通过react加载时不能正确渲染。当我正常加载它(没有React.js)时,没有问题,因为以下代码正常工作,并且映射正常显示:

<script src="https://api.tiles.mapbox.com/mapbox.js/v2.1.5/mapbox.js"></script>
<link rel="stylesheet" href="https://api.tiles.mapbox.com/mapbox.js/v2.1.5/mapbox.css"/>

<div> id="map"></div>

    <script>                
    var map = L.mapbox.map('map', 'blabla.blabla').setView([lat, long], 9);
    </script>

但是当我按照下面的方法操作时,地图通常根本不会出现,或者当它出现时,我只在div的左上角看到它的一部分。

<script src="path/to/react.js"></script>
<script src="https://api.tiles.mapbox.com/mapbox.js/v2.1.5/mapbox.js"></script>
<link rel="stylesheet" href="https://api.tiles.mapbox.com/mapbox.js/v2.1.5/mapbox.css"/>

<div id="react-content">
    <script src="path/to/react/content.js'></script>
</div>

//now inside react/content.js, there is a mapbox component inside an outer component. I'm leaving out the rest of the code to save space, and I believe that I am rendering the OuterComponent and the MapBoxMap component correctly inside that.

var MapBoxMap = React.createClass({
    componentDidMount: function() {
        L.mapbox.accessToken = this.props.accessToken;
        var map = L.mapbox.map(this.getDOMNode(), this.props.mapId)
            .setView([15, -105], 9);            
    },
    render: function() {
        return (
                <div id="map"></div>
        );
    }
});

进行缩放或打开chrome开发者工具等操作似乎有时会使地图出现。我不知道发生了什么事。当我尝试渲染贴图时,组件是否未正确安装?我以为这就是Didmount应该负责的?我真的很感激任何洞察力!哎呀,这张地图是在Zurb的基础元素里面渲染的,所以我不知道这有什么不同吗?

共有1个答案

盖绪
2023-03-14

你错过了相关的CSS?您总是需要设置元素的高度:

html, body, #map {
    height: 100%;
}

由于React,我无法进行测试,但听起来地图无法从元素中获得正确的尺寸。如果您没有设置正确的CSS,或者元素具有display:none 如果设置正确的CSS对您不起作用,您可以尝试使大小无效,这样贴图将自行重置<代码>L.mapbox。Map有一个可以调用的invalidateSize方法,请参见:

http://leafletjs.com/reference.html#map-无效化

 类似资料:
  • 我尝试将Mapbox与SwiftUI结合使用。 我https://stackoverflow.com/a/56551675/5653544应用了这个答案,也遵循了mapbox教程。 所以我有一个MapView.swift视图: 我的ContentView.swift调用MapView: 我还创建了一个~/。带有mapbox令牌的mapbox文件,该令牌由我的mapbox帐户获取。但我有一张空白地图

  • 我已经在mapbox api上工作了几天。我一直在设置的映射框中的OnCreative()方法。大多数时候,地图被加载,map.set样式工作,但有时样式没有加载,地图变成灰色。我读过mapbox api的留档。它表示,如果mapbox Map.setStyle失败,那么addOndiFailLoadingMapListener()将被调用。 以下是我的代码: 我在mapBoxmap时测试过它。s

  • 我在视图中使用mapbox,需要从JSON添加多个标记 这是我的JSON 下面是我如何运行脚本添加地图到视图 但是我想知道,我如何需要添加标记到map(对于json中的每个元素,我需要获得lat和lon)来映射。因为医生说我需要这样的Json var Geojson={type:'FeatureCollection',特性:[{type:'Feature',几何:{type:'Point',坐标:

  • MapBox 是 iOS 上 MapKit 的一个开源实现。

  • This project has moved: This project is now being maintained here: https://github.com/nativescript-community/ui-mapboxas it's become clear contrary to what I thought, I don't actually have enough time

  • ant design +Table组件 + Switch组件组合使用 在 输出的checked都为true了,但是Switch没有选中, 甚至我对table的data数据进行了useMemo了还是不行, ant design +Table组件 + Switch正常的渲染