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

前端JavaScript如何将含GPS的JSON数组转换为GeoJSON对象?

将JSON数组转换为GeoJSON对象(前端JavaScript实现)

问题描述

我有一个包含12个JSON对象的数组,每个对象结构如下:

{
 "data_type" : "trainings",
 "description" : "Training in Narewa",
 "district" : "Rewa",
 "gps_lat" : "-18.1295977111",
 "gps_lon" : "178.556147326",
 "id" : 24,
 "location" : "Tavuya",
 "program" : "Training in Nadi",
 "project" : "Entrepreneurship",
 "province" : "Rewa"
}

请问如何使用前端JavaScript将该数组转换为GeoJSON对象?

实现方法

GeoJSON中最常用的多要素容器是FeatureCollection,每个地理要素对应一个Feature,包含存储经纬度的geometry和存储其他业务属性的properties。你可以通过数组遍历快速完成转换:

// 假设原始数据数组名为trainingData
const trainingData = [/* 你的12个JSON对象数组 */];

// 转换为标准GeoJSON
const geoJson = {
  type: "FeatureCollection",
  features: trainingData.map(item => {
    return {
      type: "Feature",
      geometry: {
        type: "Point",
        coordinates: [
          parseFloat(item.gps_lon), // GeoJSON坐标顺序为[经度, 纬度]
          parseFloat(item.gps_lat)
        ]
      },
      // 提取除经纬度外的所有属性作为Feature的属性
      properties: (({ gps_lat, gps_lon, ...restProps }) => restProps)(item)
    };
  })
};

// 输出转换结果
console.log(geoJson);

关键注意事项

  • 坐标顺序:GeoJSON规定Point类型的坐标是[经度, 纬度],必须和原数据的gps_lon、gps_lat对应,不能颠倒。
  • 类型转换:原数据中的经纬度是字符串格式,需要用parseFloat转为数值类型,符合GeoJSON的规范要求。
  • 属性简化:使用对象解构赋值({ gps_lat, gps_lon, ...restProps }) => restProps可以自动排除经纬度字段,无需手动列举所有其他属性,代码更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 02:45:13