You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在React-Leaflet中遍历GeoJSON数组动态绘制多边形

问题:Leaflet中按type分组渲染多个多边形GeoJSON

我正在开发一个项目,支持用户绘制多边形并将数据保存至SQL Server,后续从SQL加载数据在Leaflet页面展示。目前已完成数据的保存与加载,相关代码如下:

const MapGeoInfo = () => {
    const [geoJsonData, setGeojsonData] = useState<any>([]);
    const [geoJsonKey, addToGeoJsonKey] = useState(1)

    useEffect(() => {
        const fetchData = async () => {
            const resp: any = await getGeoFenceMaster();
            const geoData = [];

            if (resp?.length > 0) {
                for (var i = 0; i < resp.length; i++) {
                    geoData.push([resp[i]['lng'], resp[i]['lat']]);
                }
            }

            var data = resp,
                hash = Object.create(null),
                result = data.reduce(function (r: any, a: any) {
                    if (!hash[a.type]) {
                        hash[a.type] = { type: a.type, data: [] };
                        r.push(hash[a.type]);
                    }
                    hash[a.type].data.push({ lat: a.lat, lng: a.lng });
                    return r;
            }, []);

            setTestval(data);
            setGeojsonData(geoData);
            addToGeoJsonKey(geoJsonKey + 1);
        };
        fetchData();
    }, []);
    
    return (
        <GeoJSON
            key={geoJsonKey}
            data={{
                "type": "Polygon",
                "coordinates": [geoJsonData],
            }}
            style={{ color: "#1FFFF9", weight: 4, opacity: 5 }}
        >
        </GeoJSON>
    )
};

export default MapGeoInfo;

最初我将所有坐标存入geoData数组,但发现无法区分不同多边形,导致GeoJSON展示时图形混乱:
图形混乱效果

于是尝试通过type字段(多边形名称)对数据分组,得到如下结构的hash数据:
分组后的数据结构

目前确认该数据格式可行,但不知道如何遍历分组后的数据渲染多个GeoJSON组件。我是React和Leaflet新手,研究一周仍未找到方案,考虑用map()但不确定实现方式。

补充:接口返回的resp数据包含type、name、lat、lng字段,需按type区分多边形,示例如下:

1: {type: 'A', name: 'A1', lat: 32.99253926199695, lng: -84.09759521484376}
2: {type: 'A', name: 'A1', lat: 32.99253926199695, lng: -83.00445556640625}
...(剩余数据略)

内容的提问来源于stack exchange,提问作者RunningKanguru

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 07:52:48