Это глупый вопрос, в моем проекте лифлета/javascript у меня есть сотня слоев (я еще не создал, однако мне нужно работать над ним), разделенный между LayerGroup, FeatureGroup, MarkerCluster и GeoJSON, мне нужно создать одноуровневый корень, содержащий всю информацию для проведения некоторых исследований, а затем, как только я найду информацию, я хочу получить один слой, содержащий эту информацию. Таким образом, чтобы сделать слой слияния я сделать следующий код:Лучший способ поиска/извлечения исходного контейнера Листовой слой из коллекции слоя
//My 100 Layer....
var library = new L.MarkerClusterGroup(/*some layer options*/);
var restaurant = new L.FeatureGroup(/*some layer options*/);
var house = new L.LayerGroup(/*some layer options*/);
var notClassified = new L.geoJson(content,/*some layer options*/);
//......
Так что теперь я хочу, чтобы объединить все эти слои с уникальным слоем, L.geoJson и L.MarkerClusterGroup расширяет L.FeatureGroup, в L.FeatureGroup расширяет L.LayerGroup, поэтому корневой слой должен быть L.LayerGroup, если кто-то не имеет лучший совет:
var worldLayer = new L.LayerGroup(/*some layer options*/);
for(var layer in listOfAllLayers){
worldlayer.addLayer(layer);
}
map.addLayer(worldLayer);
Дополнительный вопрос: это лучший способ сделать это?
После создания моего worldLayer я делаю некоторые исследования, например. отслеживать идентификатор, назначенный конкретному L.Marker или конкретному объекту Json на GeoJson мирового уровня. Поэтому я думаю, что лучший способ работы на GeoJSON результате WorldLayer:
//Get json content from the worldlayer Layer
var json = worldLayer.toGeoJSON();
var key =...,
var value = ..-;
for(var i =0; i < json.features.length; i++){
var resulJson = searchJsonByKeyAndValue(json.features[i],key,value);
//now work with resultJson....
}
//key is the id and the value is what i looking for e.g. 456
function searchJsonByKeyAndValue(json,key,value){
for (var i = 0; i < json.length; i++) {
try {
if (json[i].hasOwnProperty(key)) {
if (json[i][key] == value) {
return json[i];
}
}
}catch(e){
alert(e.message);
}
}
return null;
}
Дополнительный вопрос 2: это лучший способ сделать это?
Мой вопрос: Среди другой информации есть способ найти конкретный исходный уровень информации о объекте json? Например, «worldLayer», я знаю, что конкретная информация присутствует также в «библиотеках», поэтому я хочу удалить значения «библиотеки» или библиотеки объектов Layer. Теперь я решил, добавив к каждой Особенности различных слоев дополнительную информацию в вызове объекта функции json «originLayers», поэтому, когда я восстанавливаю json-объект с помощью процедуры, которую я проиллюстрировал, я восстанавливаю даже нужную информацию; но для этого мне нужно пойти на анализ GeoJSON всех слоев (не очень маленький), и для каждой отдельной функции добавьте новую информацию. Есть альтернативный способ улучшить все? Ty за любую помощь.
Спасибо так много, на самом деле, мне кажется, решение ближе к тому, что мне нужно, (конечно, гораздо лучше использовать петлю для т.д.), я отметить этот ответ как правильный ответ, но я остаюсь открытым для других рекомендаций и предложений. – 4535992
hasLayer только что подготовлен для вас. Он работает с большим объектом, в котором идентификаторы листовок хранятся в виде ключей, поэтому вам не нужно зацикливать его. –