对于百度地图的基本使用的话,可以看一下其官方文档, 本文着重讲解关于 Marker 标注的使用以及点聚合并结合到地图各省的聚合实现 。
这里会使用到 react-bmapgl 这个库,其是百度地图的 React 封装库,详细使用可以参考其官方文档 。
使用方式和 API 基本和原生一致,只是将控件转换成了组件以及 API 转换成了属性,内部最终还是调用原生的 API 实现。
最终实现效果展示:

先从简单的开始,先看看最简单的 Marker 使用。
数据如下,包括一些基本信息:经纬度、省份代码、名称;后续都会使用该数据进行 Marker 操作。
const markerList = [
{
lng: 121.555858,
lat: 38.976823,
name: '标注1',
provinceCode: '21',
},
{
lng: 121.523497,
lat: 24.945629,
name: '标注2',
provinceCode: '71',
},
{
lng: 121.397243,
lat: 31.174497,
name: '标注3',
provinceCode: '31',
},
{
lng: 121.397243,
lat: 31.174497,
name: '标注4',
provinceCode: '31',
},
{
lng: 116.801042,
lat: 38.94907,
name: '标注5',
provinceCode: '12',
},
{
lng: 104.256265,
lat: 39.99193,
name: '标注6',
provinceCode: '15',
},
{
lng: 122.978436,
lat: 41.130165,
name: '标注7',
provinceCode: '21',
},
{
lng: 108.834663,
lat: 34.398372,
name: '标注8',
provinceCode: '61',
},
{
lng: 121.327012,
lat: 31.200458,
name: '标注9',
provinceCode: '31',
},
{
lng: 117.375726,
lat: 39.133141,
name: '标注10',
provinceCode: '12',
},
]
再来看看地图组件的实现
const Container = () => {
return (
<Map
zoom={6}
center={{ lat: 37.41918484360441, lng: 104.12234245932834 }}
style={{ height: '100%' }}
enableDragging
mapType='normal'
enableScrollWheelZoom
>
{markerList.map(item => (
<Marker key={item.name} position={{ lng: item.lng, lat: item.lat }} />
))}
</Map>
)
}
效果如下:
