无法使用 JS 变量访问带有“:”的 GeoJSON 属性

Unable to access GeoJSON properties with ":" using JS variable

我目前正在关注 the tutorial on Mapbox 使用地图构建商店定位器。

我在显示从 Turbo Overpass 获得的 GeoJSON 文件中的数据时遇到问题。使用的 GeoJSON 示例:

"properties": {
    "@id": "node/5750820619",
    "addr:city": "Caissargues",
    "addr:housenumber": "180",
    "addr:postcode": "30132",
    "addr:street": "Avenue de la Vistrenque",
    "description:covid19": "horaires légèrement réduits",
    "name": "Bio Marché",
},

在我的 Javascript 文件中,我可以使用以下代码访问名称等属性:

var details = listing.appendChild(document.createElement('div'));
details.innerHTML = prop.addr:city;

...但是我无法弄清楚如何访问 addr:cityaddr:postcode 字段,因为我要么在 vs 代码中得到一个意外的标识,要么它是 returns 一个未定义的值在网站上。我已经尝试使用 prop.addr:city;prop.addr/':city'/; 和网站上建议的其他方式。

如果有人能指出正确的方向或提出解决方案,我将不胜感激。 谢谢!

您应该像这样访问这些属性:

details.innerHTML = prop['addr:city'];

这是可行的,因为在 Javascript 中,始终可以使用这些括号访问对象属性。

例如这个:

const a = prop.a;

等于

const a = prop['a'];

然而,使用最后一个语法 Javascript 会轻松很多。你甚至可以这样做:

const property = prop['some property with lots of spaces'];