Leaflet 如何在GraphHopper中添加GeoJSON层?
我有一个GeoJSON文件,其中包含我希望能够在单独的GraphHopper层中显示的POI。经过几次尝试和在互联网上搜索,我就是找不到一个方法来做这件事 这是GeoJSON文件的一个示例(我用JSON验证器检查了整个文件,一切正常) {“类型”:“特征”, “财产”:{ “费用”:“否”, “自行车停放”:“锚”, “ref”:“PVNAN23”, “地址”:“加布里埃尔·高迪街44200号南特”, “名称”:“Pirmil P+R”, “容量”:“24”, “park_ride”:“是”, “舒适性”:“自行车和停车场”, “涵盖”:“是” }, “几何体”:{“类型”:“点”,“坐标”:[-1.5406709,47.1960031]}, {“类型”:“特征”, “财产”:{ “自行车停车场”:“看台”, “地址:邮政编码”:“44000”, “地址:国家”:“FR”, “姓名”:“玛德琳”, “容量”:“6”, “舒适性”:“自行车和停车场”, “地址:街道”:“马德兰街”, “注”:“vérifié”, “地址:城市”:“南特”, “覆盖”:“否”, 地址:门牌号:“35” }, “几何体”:{“类型”:“点”,“坐标”:[-1.55076671448,47.21000114109]} ]}Leaflet 如何在GraphHopper中添加GeoJSON层?,leaflet,geojson,graphhopper,Leaflet,Geojson,Graphhopper,我有一个GeoJSON文件,其中包含我希望能够在单独的GraphHopper层中显示的POI。经过几次尝试和在互联网上搜索,我就是找不到一个方法来做这件事 这是GeoJSON文件的一个示例(我用JSON验证器检查了整个文件,一切正常) {“类型”:“特征”, “财产”:{ “费用”:“否”, “自行车停放”:“锚”, “ref”:“PVNAN23”, “地址”:“加布里埃尔·高迪街44200号南特”, “名称”:“Pirmil P+R”, “容量”:“24”, “park_ride”:“是”,
我尝试了中解释的内容,但无法使其工作。如果您的JSON有效,并不意味着您使用的是有效的GeoJSON对象。例如:
{“foo”:“bar”}
是完全有效的JSON,但决不是有效的GeoJSON对象。L.GeoJSON,传单的GeoJSON层需要FeatureCollection或包含Features的数组
有效的功能集合:
{
"type": "FeatureCollection",
"features": [{
"type": "Feature",
"properties": {
"id": 1
},
"geometry": {
"type": "Point",
"coordinates": [0,0]
}
},{
"type": "Feature",
"properties": {
"id": 2
},
"geometry": {
"type": "Point",
"coordinates": [1,1]
}
}]
}
或者仅使用具有以下功能的阵列:
[{
"type": "Feature",
"properties": {
"id": 1
},
"geometry": {
"type": "Point",
"coordinates": [0,0]
}
},{
"type": "Feature",
"properties": {
"id": 2
},
"geometry": {
"type": "Point",
"coordinates": [1,1]
}
}]
(请注意,仅仅一个特性数组不是有效的GeoJSON对象,但传单将毫无问题地处理它)
要将它们加载到L.GeoJson层中,您需要在脚本中提供它们。可以在创建图层之前简单地声明对象。例如:
// Declare GeoJSON object
var geojson = {
type: "FeatureCollection",
features: [
// Features here
]
}
// Create a new GeoJSON layer with geojson object
// And add to map (assuming your map instance is assigned to "map")
var layer = new L.GeoJSON(geojson).addTo(map);
但是当你有很多特性时,这会变得非常混乱,而且最好保持逻辑和数据分开,所以你应该把数据对象放在一个单独的文件中。假设您将对象存储在一个名为“geo.json”的文件中,然后您可以使用您选择的XHR/AJAX解决方案加载该文件。我在以下示例中使用jQuery:
// Fetch geo.json file and assign the data to geojson variable
$.getJSON('geo.json', function (geojson) {
// Create a new GeoJSON layer with GeoJSON object
// And add to map (assuming your map instance is assigned to "map")
var layer = new L.GeoJSON(geojson).addTo(map);
});
这里有一个关于Plunker的工作示例:感谢您的回答。我复制了您的代码并将其粘贴在GraphOper min.的脚本文件的末尾。不幸的是,它没有渲染,POI甚至在层中都不可用。我在Plunker中复制并粘贴了geoson代码,效果很好,所以至少geoson文件是正确的。对不起,我不熟悉Graphhopper,我试着看一看,但他们的API在注册之后:(不,你可以免费下载代码,在社区中到处都可以。是的,我找到了实际的源代码,但它没有文档或任何wiki。我一直在寻找文档/参考资料,但从我现在看到的来看,这真的不是我喜欢的。从我到目前为止看到的情况来看,我认为GH并不像你希望的那样可扩展。也许吧你可以尝试在他们的追踪器上提出一个问题。好的,谢谢你的帮助,我会按照你的建议去做。如果有任何解决方案,我会在这里发布答案,以防其他人感兴趣。