Я пытаюсь сделать что-то очень похожее на то, что сделал Крис Эссиг here. Потому что мне нужно знать, сколько точек данных находится в радиусе 20 метров от того места, где пользователь подал «trashMarker».Листовка: layer.getLatLng не работает с функцией .eachLayer
До сих пор я получил этот код:
// Create the FeatureGroup and add it to the map
var jsonGroup = new L.FeatureGroup();
mapOverview.addLayer(jsonGroup)
//Retrieve all data and add to map
$.each(datalistObject['idlist'], function(key, value) {
$.getJSON('http://mydata.com' + value['id'], function(data) {
textbox = value['name'];
var dataid = L.geoJson([data], {
style: function (feature) {
return feature.properties && feature.properties.style;
},
onEachFeature: onEachFeature,
pointToLayer: function (feature, latlng) {
return L.marker(latlng, {
icon: value['icon']
});
}
}).addTo(jsonGroup);
},function(xhr) { console.error(xhr); });
});
//Code to find the markers within a 20 meter radius of trashMarker
function markersInRadius() {
// Lat, long of trash marker on overview map
var trashMarkerLat_long = trashMarkerOverview.getLatLng();
// counter of the amount of markers that are within a 20 meter radius
var counter_markers_in_radius = 0;
console.log(jsonGroup);
// Loop through each point in JSON file
jsonGroup.eachLayer(function (layer) {
// Lat, long of current point
layerLatLong = layer.getLatLng();
// Distance from our circle marker
// To current point in meters
distance_from_layer_circle = layerLatLong.distanceTo(trashMarker_lat_long);
// See if meters is within raduis
// The user has selected
if (distance_from_layer_circle <= 20) {
counter_markers_in_radius += 1;
};
console.log(counter_markers_in_radius);
});
// Close pointsInCircle
};
Когда я запускаю этот код, я получаю ошибку говоря layer.getLatLng не является функцией.
После выполнения console.log в группе FeatureGroup jsonGroup я обнаружил, что группа имеет два объекта на вкладке слоев без какой-либо latlng-информации, но вместо этого представляет собой вкладку слоев, содержащую все точки данных с latlng info ... Может быть, это проблема?
Вы, возможно, придется разобрать слой до получения широты и долготы от него? –
Думаю, что да. Попытка выяснить, как это происходит сейчас, спасибо. – Yonker
Вы можете увидеть FeatureGroup, зарегистрированную в консоли, здесь: http://casperjonker.nl/kijk_radius/ – Yonker