<ReactMapGL/> 组件显示黑屏
<ReactMapGL/> component shows blank screen
我正在关注 lama dev youtube 频道关于在 reactjs 中使用 mapbox 的视频。
但是当我 运行 reactjs 脚本时,我的地图组件是空的。
视频:
https://youtu.be/9oEQvI7K-rA
源代码:
https://github.com/safak/youtube/tree/mern-travel-app
我的代码
import * as React from 'react';
import { useState } from 'react';
import ReactMapGL from 'react-map-gl';
function App() {
const [viewport, setViewport] = useState({
width: "100vw",
height: "100vh",
latitude: 46,
longitude: 17,
zoom: 8,
});
return (
<div className="App">
<ReactMapGL
{...viewport}
mapboxApiAccessToken = {process.env.REACT_APP_MAPBOX}
onViewportChange={nextViewport => setViewport(nextViewport)}
/>
</div>
);
}
export default App;
我按照编码进行操作,在反应部分,我创建了 .env 文件,安装并导入了 react-map-gl 并使用了 .env 文件。出于某种原因,我只看到空白屏幕而不是地图。
我尝试了 uber 库中的示例代码 visgl.github.io,也尝试了您提供的源代码,但屏幕仍然是空白的。
遵循了这些解决方案:
Mapbox blank map React-map-gl | ReactJS
但组件仍然是空的。
任何帮助都会有用,谢谢!
编辑 1:
我在 firefox 控制台中发现了这个错误:
An error occurred while parsing the WebWorker bundle. This is most likely due to improper transpilation by Babel; please see https://docs.mapbox.com/mapbox-gl-js/guides/install/#transpiling
在 J-007 的评论之后,我在之前的导入行下面添加了这些行:
import mapboxgl from 'mapbox-gl';
mapboxgl.workerClass = require('worker-loader!mapbox-gl/dist/mapbox-gl-csp-worker').default;
地图现在工作正常。
编辑:
这只在一个项目中有效——
https://codesandbox.io/s/react-test-ivbkv?file=/src/App.js
然后它在提供的示例中不起作用
http://visgl.github.io/react-map-gl/docs/get-started/get-started
然后我发现——
https://medium.com/geekculture/building-an-interactive-map-with-mapbox-react-f335384f4863:
并完全按照本文中所述使用 npx create-react-app 项目名称,我发现该地图甚至在 http://visgl.github.io/react-map-gl/docs/get-started/get-started 脚本中也能正常工作。
编辑 2:
从 Medium 文章中复制粘贴代码(以防万一)-
npx create-react-app mapbox-project
cd mapbox-project
npm i react-map-gl react-map-gl-geocoder
npm start
import React, { Component } from 'react';
import ReactMapGl from 'react-map-gl'
import 'mapbox-gl/dist/mapbox-gl.css';
const mapboxToken = 'YOUR API KEY'
class Map extends Component {
constructor() {
super()
this.state = {
viewport: {
width: '100vw',
height: '100vh',
latitude: 40.78343,
longitude: -73.96625,
zoom: 11
}
}
this.handleViewportChange = this.handleViewportChange.bind(this)
}
handleViewportChange(viewport) {
this.setState(prevState => ({
viewport: {...prevState.viewport, ...viewport}
}))
}
render() {
return (
<ReactMapGl
{...this.state.viewport}
onViewportChange={viewport => this.setState({viewport})}
mapboxApiAccessToken={mapboxToken}
mapStyle="mapbox://styles/mapbox/streets-v10"
/>
)
}
}
export default Map;
对我有用的是这个页面:
http://visgl.github.io/react-map-gl/docs/get-started/get-started
npm install --save react-map-gl mapbox-gl
然而,我认为教程只是 react-map-gl
我正在关注 lama dev youtube 频道关于在 reactjs 中使用 mapbox 的视频。 但是当我 运行 reactjs 脚本时,我的地图组件是空的。
视频: https://youtu.be/9oEQvI7K-rA
源代码: https://github.com/safak/youtube/tree/mern-travel-app
我的代码
import * as React from 'react';
import { useState } from 'react';
import ReactMapGL from 'react-map-gl';
function App() {
const [viewport, setViewport] = useState({
width: "100vw",
height: "100vh",
latitude: 46,
longitude: 17,
zoom: 8,
});
return (
<div className="App">
<ReactMapGL
{...viewport}
mapboxApiAccessToken = {process.env.REACT_APP_MAPBOX}
onViewportChange={nextViewport => setViewport(nextViewport)}
/>
</div>
);
}
export default App;
我按照编码进行操作,在反应部分,我创建了 .env 文件,安装并导入了 react-map-gl 并使用了 .env 文件。出于某种原因,我只看到空白屏幕而不是地图。 我尝试了 uber 库中的示例代码 visgl.github.io,也尝试了您提供的源代码,但屏幕仍然是空白的。
遵循了这些解决方案:
Mapbox blank map React-map-gl | ReactJS
但组件仍然是空的。
任何帮助都会有用,谢谢!
编辑 1: 我在 firefox 控制台中发现了这个错误:
An error occurred while parsing the WebWorker bundle. This is most likely due to improper transpilation by Babel; please see https://docs.mapbox.com/mapbox-gl-js/guides/install/#transpiling
在 J-007 的评论之后,我在之前的导入行下面添加了这些行:
import mapboxgl from 'mapbox-gl';
mapboxgl.workerClass = require('worker-loader!mapbox-gl/dist/mapbox-gl-csp-worker').default;
地图现在工作正常。
编辑: 这只在一个项目中有效—— https://codesandbox.io/s/react-test-ivbkv?file=/src/App.js 然后它在提供的示例中不起作用 http://visgl.github.io/react-map-gl/docs/get-started/get-started
然后我发现—— https://medium.com/geekculture/building-an-interactive-map-with-mapbox-react-f335384f4863:
并完全按照本文中所述使用 npx create-react-app 项目名称,我发现该地图甚至在 http://visgl.github.io/react-map-gl/docs/get-started/get-started 脚本中也能正常工作。
编辑 2: 从 Medium 文章中复制粘贴代码(以防万一)-
npx create-react-app mapbox-project
cd mapbox-project
npm i react-map-gl react-map-gl-geocoder
npm start
import React, { Component } from 'react';
import ReactMapGl from 'react-map-gl'
import 'mapbox-gl/dist/mapbox-gl.css';
const mapboxToken = 'YOUR API KEY'
class Map extends Component {
constructor() {
super()
this.state = {
viewport: {
width: '100vw',
height: '100vh',
latitude: 40.78343,
longitude: -73.96625,
zoom: 11
}
}
this.handleViewportChange = this.handleViewportChange.bind(this)
}
handleViewportChange(viewport) {
this.setState(prevState => ({
viewport: {...prevState.viewport, ...viewport}
}))
}
render() {
return (
<ReactMapGl
{...this.state.viewport}
onViewportChange={viewport => this.setState({viewport})}
mapboxApiAccessToken={mapboxToken}
mapStyle="mapbox://styles/mapbox/streets-v10"
/>
)
}
}
export default Map;
对我有用的是这个页面: http://visgl.github.io/react-map-gl/docs/get-started/get-started
npm install --save react-map-gl mapbox-gl
然而,我认为教程只是 react-map-gl