javascript - 你如何将来自服务器的普通地理 json 转换为 geoJson?
问题描述
我有一个带有普通 json 格式地理数据的服务器,我需要将其更改为 geojson 格式,以便 Mapbox 可以读取它。你怎么做到这一点?
例如,如何转换:
[
{
"id": 0,
"name": "Hotel",
"icon": "Sleep",
"address": "SampleStreet 34",
"latitude": 12,
"longitude": 55
}
]
进入这个:
{
"type": "FeatureCollection",
"features": [
{
"id": 0,
"type": "Feature",
"properties": {
"placeID": 0,
"name": "Hotel",
"icon": "sleep",
"addressFormatted": "SampleStreet 34"
},
"geometry": {
"type": "Point",
"coordinates": [
12,
55
]
}
}
解决方案
如果您使用 ES6,那么这样的东西可能对您JSON.stringify
有用,如果您可以直接使用生成的对象,则可能不需要。
const data = [
{
id: "0",
name: "Hotel",
icon: "Sleep",
address: "SampleStreet 34",
latitude: "12",
longitude: "55"
},
{
id: "1",
name: "Landmark",
icon: "Star",
address: "SampleStreet 1234",
latitude: "99",
longitude: "100"
}
];
const geojson = {
type: "FeatureCollection",
features: data.map(item => {
return {
id: item.id,
type: "Feature",
properties: {
placeID: item.id,
name: item.name,
icon: item.icon,
addressFormatted: item.address
},
geometry: {
type: "Point",
coordinates: [item.latitude, item.longitude]
}
};
})
};
console.log(geojson);
console.log(JSON.stringify(geojson));
推荐阅读
- javascript - 如何将选定的选项值复制到剪贴板?
- python - utils 不包含 progress_bar_downloader
- laravel - 审核模型时有没有办法指定特定用户?
- sparql - 如何在 DBpedia SPARQL 端点上检索特定节点的 pagerank 分数?
- java - 共享首选项值未立即更新
- java - 连接不可用,请求在 30002ms 后超时
- javascript - Laravel 8:为什么登录刀片不显示 Javascript 警报
- prolog - Prolog寻路在找到答案后陷入循环
- javascript - Javascript:Stripe 和 Apple Pay 网络设置
- python - 如何解释整数的布尔运算?