我有自定义的'纬度'和'经度'变量。
var custom_loc = [50.34434, 63.23442]
此外,我还有JSON
格式的GeoJSON
数据。
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [50.34434, 63.23442]
},
"properties": {
"id" : "1",
"name": "Good place"
}
}
如何通过JSON
找到"custom_loc"
标记并获取JSON
属性(对于e.x. "ID"
)?
我在项目中使用leaflet.js。
答案 0 :(得分:0)
您可以使用标记getLatLng()
方法访问其latlng,然后将其与您的自定义位置进行匹配。要将id绑定到图层,最好的办法是将geoJSON功能添加到L.GeoJSON图层并通过layer.feature.properties.id
访问id,或通过传递给L的onEachFeature
方法将id绑定到图层。 GeoJSON选项。
然后,只要您想找到具有匹配latlng的图层,只需使用eachlayer
方法遍历您的geojson图层,例如:
var custom_loc = [50.34434, 63.23442];
var geoJSON = L.geoJson(
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [50.34434, 63.23442]
},
"properties": {
"id" : "1",
"name": "Good place"
}
}
]
},
{
onEachFeature: function(feature, layer) {
layer.options.id = feature.properties.id;
}
}
);
map.addLayer(geoJSON);
geoJSON.eachLayer(l => {
var coords = l.feature.geometry.coordinates;
var latlng = l.getLatLng();
if (latlng.lat === custom_loc[1] && latlng.lng === custom_loc[0]) {
console.log(`Latlng match: ${l.options.id}`)
}
if (coords[0] === custom_loc[0] && coords[1] === custom_loc[1]) {
console.log(`Latlng match: ${l.options.id}`);
}
});