Example #1
0
        private void OnLayersChanged(object sender, NotifyCollectionChangedEventArgs args)
        {
            if (args.Action == NotifyCollectionChangedAction.Add)
            {
                foreach (var item in args.NewItems)
                {
                    var layer = item as Layer;
                    LeafletInterops.AddLayer(_jsRuntime, Id, layer);
                }
            }
            else if (args.Action == NotifyCollectionChangedAction.Remove)
            {
                foreach (var item in args.OldItems)
                {
                    if (item is Layer layer)
                    {
                        LeafletInterops.RemoveLayer(_jsRuntime, Id, layer.Id);
                    }
                }
            }
            else if (args.Action == NotifyCollectionChangedAction.Replace ||
                     args.Action == NotifyCollectionChangedAction.Move)
            {
                foreach (var oldItem in args.OldItems)
                {
                    if (oldItem is Layer layer)
                    {
                        LeafletInterops.RemoveLayer(_jsRuntime, Id, layer.Id);
                    }
                }

                foreach (var newItem in args.NewItems)
                {
                    LeafletInterops.AddLayer(_jsRuntime, Id, newItem as Layer);
                }
            }
        }