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

如何用List.js从OpenLayers的GeoJSON嵌套对象生成指定格式列表?

解决方法

你遇到的问题是List.js默认不支持直接引用嵌套在properties里的字段,所以直接用点/方括号写法无效。下面提供两种可行的实现方式:

方法一:先转换数据(推荐)

先把GeoJSON数据里嵌套的zona和nome提取到根层级,让List.js能直接识别字段:

HTML结构

<!-- 列表容器 -->
<div id="zone-list">
  <ul class="list"></ul>
</div>

JavaScript代码

// 你的原始GeoJSON数据
var json_2 = [ 
  {"properties": { "zona": "Italia", "nome": "A"} }, 
  {"properties": { "zona": "Italia", "nome": "I" } } 
];

// 转换数据:提取需要的字段到根层级
var processedData = json_2.map(item => ({
  zona: item.properties.zona,
  nome: item.properties.nome
}));

// 初始化List.js
var listOptions = {
  valueNames: ['zona', 'nome'], // 对应转换后的数据字段
  item: '<li><span class="zona"></span> - <span class="nome"></span></li>' // 列表项模板
};

new List('zone-list', listOptions, processedData);

方法二:自定义列表项渲染函数

无需转换数据,直接通过List.js的自定义item函数渲染嵌套字段:

HTML结构

和方法一相同,只需保留列表容器即可。

JavaScript代码

// 你的原始GeoJSON数据
var json_2 = [ 
  {"properties": { "zona": "Italia", "nome": "A"} }, 
  {"properties": { "zona": "Italia", "nome": "I" } } 
];

// 初始化List.js,用函数生成列表项
var listOptions = {
  item: function(data) {
    // 直接读取嵌套的properties字段拼接内容
    return `<li>${data.properties.zona} - ${data.properties.nome}</li>`;
  }
};

new List('zone-list', listOptions, json_2);

注意事项

  • 确保页面中已引入List.js库(建议使用本地文件,避免外链依赖)。
  • 两种方法都能生成你需要的「zona - nome」格式列表,不需要嵌套结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 12:05:02