我是 React 和 MapBox 的新手,我创建了一个可以渲染的地图,但是我试图从 geojson 显示的标记没有显示出来。我初始化了地图并像这样添加了图层:
import React from 'react';
import ReactDOM from 'react-dom';
import mapboxgl from 'mapbox-gl';
mapboxgl.accessToken = 'token';
class Application extends React.Component {
constructor(props) {
super(props);
this.state = {
lng: -98.4936,
lat: 29.4241,
zoom: 10
};
}
componentDidMount() {
const map = new mapboxgl.Map({
container: this.mapContainer,
style: 'mapbox://styles/mapbox/streets-v11',
center: [this.state.lng, this.state.lat],
zoom: this.state.zoom
});
map.on('load', function() {
map.addSource("points", {
"type": "geojson",
"data": 'https://raw.githubusercontent.com/saucedaf/geo-jason/main/sa-stores.geojson'
})
map.addLayer({
"id": "points",
"type": "symbol",
"source": "points",
"layout": {
"icon-image": "{icon}-15",
"text-field": "{title}",
"text-font": ["Open Sans Semibold", "Arial Unicode MS Bold"],
"text-offset": [0, 0.6],
"text-anchor": "top"
}
});
});
};
render() {
return (
<div>
<div ref={el => this.mapContainer = el} className="mapContainer" />
</div>
)
}
}
ReactDOM.render(<Application />, document.getElementById('app'));
我的 index.html 看起来像这样:
<!DOCTYPE html>
<html lang='en'>
<head>
<title>Mapbox GL JS and React</title>
<meta charset='utf-8'>
<meta name='viewport' content='width=device-width, initial-scale=1'>
<link href='https://api.tiles.mapbox.com/mapbox-gl-js/v2.0.1/mapbox-gl.css' rel='stylesheet' />
<link href='site.css' rel='stylesheet'/>
</head>
<body>
<div id='app'></div>
</body>
</html>
最后这是我的CSS:
.mapContainer {
position: absolute;
top: 0;
right: 0;
left: 0;
bottom: 0;
width: 80%;
height: 80%;
}
.marker {
border: none;
cursor: pointer;
height: 56px;
width: 56px;
background-color: rgba(0, 0, 0, 0);
}
我将不胜感激任何帮助