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

JavaScript如何将JSON数据转换为GeoJSON格式应用于地图项目

问题根因

  • 你获取到的jsonData是数组格式(外层由[]包裹多个站点对象),你直接以对象的方式读取jsonData['latitude']属性,数组本身不存在这两个属性,自然会报未定义错误。
  • 单个Feature结构只能存储单个点位数据,你有多条站点数据,需要生成标准的FeatureCollection格式的GeoJSON,才能符合大多数地图组件的渲染要求。
  • 注意GeoJSON的Point类型坐标顺序要求是 [经度, 纬度],你原代码写反了顺序,会导致点位渲染位置偏移。
  • 你原始数据中的经纬度是字符串类型,最好转换为数字格式,避免部分地图组件解析时报错。

修正后的转换代码

$.getJSON("./origin/neworigin.json", function(jsonData) {
    // 初始化标准GeoJSON FeatureCollection结构
    var outGeoJson = {
        "type": "FeatureCollection",
        "features": []
    };
    // 遍历所有站点数据,逐个生成Feature
    jsonData.forEach(function (item) {
        var feature = {
            "type": "Feature",
            "properties": item,
            "geometry": {
                "type": "Point",
                // 坐标顺序为经度在前、纬度在后,同时转换为数字类型
                "coordinates": [Number(item.longitude), Number(item.latitude)]
            }
        };
        outGeoJson.features.push(feature);
    });
    console.log(outGeoJson);
    // 此处可直接将outGeoJson传入地图组件使用
});

效果验证

运行修正后的代码输出的就是标准GeoJSON格式,可直接传入Leaflet、Mapbox、OpenLayers等主流地图库的点位渲染接口使用,不会再出现属性未定义的报错。

内容的提问来源于stack exchange,提问作者Ander Canales Medina

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 10:24:03