2013-04-30 5 views
0

У меня есть серия Листовых FeatureGroups, которые состоят из серии слоев GeoJSON. FeatureGroups концептуально похожи, но мне нужно, чтобы они были раздельными по определенным причинам контроля. Мне также нужно иметь возможность включать и выключать их сразу. Есть ли способ сделать это?Лист-лист Групповые элементы управления

Я просмотрел документацию и не смог найти событие, которое срабатывает при включении и выключении FeatureGroup. Существует также не документированный способ объединения FeatureGroups в какую-то супергруппу.

Для тех, кто хочет представить его, вот рабочий процесс:

GeoJSON получает данные, которые превратились в слои в листовке. Это разные границы администрирования (например, государства, округа и т. Д.). Каждый из слоев переходит в другую FeatureGroup, основанную на его типе (например, Арканзас и Нью-Йорк входят в государственную группу FeatureGroup, Ford и Lincoln входят в County FeatureGroup). Таким образом, у меня есть контроль над непрозрачностью и стилем для разных FeatureGroups (например, когда я смотрю на графства состояния, я могу снизить непрозрачность всех остальных состояний). Мне также нужен способ отменить все это и снова включить. Листовка предоставляет возможность делать это в FeatureGroup по FeatureGroup, но не супер-набор.

Любые идеи о том, как достичь этого?


Новая версия вопроса:

Что такое событие, которое срабатывает при повороте на LayerGroup Включение и выключение? Нужно ли вообще втягиваться в это?

ответ

1

В результате у меня были обычные LayerGroups или FeatureGroups, а затем группа FeatureGroup, содержащая все слои во всех группах. Поэтому, когда вы добавляете фигуру или слой в FeatureGroup, добавьте ее в FeatureGroup, которую вы используете, чтобы отслеживать все. И, конечно, если вы удалите, не забудьте удалить его. Вы можете добавить эту базу FeatureGroup к карте вместе с другими группами, и все должно быть хорошо.

+0

Спасибо. Я закончил использование пустой LayerGroup и событий overlayadd и overlayremove, а затем вручную включил и отключил все слои. – Josh

1

Я не думаю, что Leaflet в настоящее время предоставляет событие, когда LayerGroup включается или выключается (вы говорите с L.Control, верно?). Я согласен, что это было бы полезно. Пока вы можете просто расширить код, чтобы делать все, что вам нужно. Например:

var customLayerControl = L.Control.Layer.extend({ 
    _onInputClick: function(Layer, name){ 
     // This is just like calling super() if this confuses you! 
     L.Control.Layers.prototype._onInputClick.call(this,Layer,name); 
     // Do stuff 
    } 
}); 

Тогда вместо того, чтобы использовать L.Control.Layers, используйте свой собственный контроль уровня:

map.addControl(new customLayerControl({}, {'Custom Layer':customLayer},{})); 

Я надеюсь, что это помогает.

+0

Это было полезно, но, поскольку я уже был главным образом к предложению @gibbocool, я использовал это. – Josh

 Смежные вопросы

  • Нет связанных вопросов^_^