还有一种解决方案,您不需要任何mapbox,因为在mapbox v2之后,它需要一个令牌,并且它将无法帮助用户实现未来的功能。有一个替代mapbox的地图库,叫做MAPLIBRE。您可以使用maplibre css进行地图实现,使用Cartocdn JSON文件进行地图样式设置(城市、道路、学校等)。
您可以使用此地图添加数据集、聚类和其他功能。
以下是使用react、maplibre和javascript的代码片段:
import React, { useState, useEffect, useRef } from 'react';
import maplibregl from 'maplibre-gl';
import 'maplibre-gl/dist/maplibre-gl.css';
const MaplibreUe = () => {
const mapContainer = useRef(null);
const [viewState, setViewState] = useState({
center: [-100.43, 35],
zoom: 5,
pitch: 50
});
useEffect(() => {
const map = new maplibregl.Map({
container: mapContainer.current,
style: 'https://tiles.basemaps.cartocdn.com/gl/dark-matter-gl-style/style.json',
...viewState,
});
map.addControl(new maplibregl.ScaleControl(), 'bottom-right');
map.addControl(new maplibregl.FullscreenControl(), 'bottom-right');
map.addControl(new maplibregl.NavigationControl(), 'bottom-right');
map.addControl(new maplibregl.GeolocateControl(), 'bottom-right');
return () => {
map.remove();
};
}, []);
return (
<>
<div
ref={mapContainer}
style={{
width: '100%',
height: '100%',
position: 'absolute',
}}
></div>
</>
);
};
export default MaplibreUe;