nested - 在 Mapbox 中显示嵌套 GeoJson 的属性
问题描述
我无法查询从 geojson 源导入并显示在 mapbox 地图上的嵌套属性功能。
我可以通过单击侦听器获得该功能,但是一旦嵌套了该属性,该对象就会表示为一个字符串
{
...
properties: {
address: "{"place":"Bern","street":"Fischerweg","street_nr":"11","zip":"3012"}"
price: 4500
}
}
因此,当单击它时,我只能在弹出窗口中显示未嵌套的属性。
我的代码:
const features = this.queryRenderedFeatures(e.point, {
layers: ['unclustered-point']
});
console.log(feature.properties.price) --> 4500
console.log(feature.properties.address) --> string instead of object {"place":"Bern","street":"Fischerweg","street_nr":"11","zip":"3012"}
console.log(feature.properties.address.street) --> undefined (--> NOT WORKING because of nested property)
const popup = new mapboxgl.Popup({offset: [0, -15]})
.setLngLat(feature.geometry.coordinates)
.setHTML('<h3>Price: ' + feature.properties.price + '</h3>
<p>Street: ' + feature.properties.address.street + '</p>')--> NOT WORKING because of nested property
.setLngLat(feature.geometry.coordinates)
.addTo(map);
我读到您可以使用表达式访问嵌套属性,但是如何在弹出窗口的 html 中应用表达式?有没有办法可以访问嵌套属性或者我必须重新设计geojson的结构?
非常感谢任何帮助!非常感谢,
问候西蒙
解决方案
由于属性值被转换为 JSON 字符串,因此需要进行反向转换:
Object.keys(feature.properties).forEach(function(key) {
feature.properties[key] = JSON.parse(feature.properties[key]);
});
推荐阅读
- java - org.hibernate.MappingException:无法确定自定义对象类型的类型
- api - 如何从 Instagram API 获取用户名?
- html - 加载网页时删除动画
- javascript - signIn 函数总是返回“错误信息”
- javascript - 关于如何自动化流程的问题
- java - 用于在 Spring Boot 应用程序中运行 cron 作业的微服务
- forms - Flutter:如何验证注册表单中的 URL 字符串?
- docker - 有没有办法让两个不同的 Docker 覆盖网络进行通信?
- scala - Scala 上类型边界隐含?
- sql - (?)SQL - 互连连接(如何在两个表之间建立链?)