--- 1.1. Map.VariableLayers.
alternatives: Add a property to ILayer like 'Variable', or perhaps the term 'Dynamic' is better. Or work with a DataChanged event mechanism and set an Invalidated property on that event. A general remark: Caching of what is rendered is a performance optimization
and should not have a big impact on the core architecture.
--- 1.2. Why Map.Layers is a BindingList (very implementation specific, I think we should use some observable collection interface of .NET 4 instead)
ok i guess.
--- 1.3. ICanQueryLayer - hmm, sounds like a bad design decision, we can already query data on IProviders, right? YAGNI (remove it!)
In WMS you need a distinction between the image and the feature info. Perhaps there are other alternatives we could discuss on Skype.
--- 2.1. Layers is a Collection<Layer> and Map.Layers is a BindingList<ILayer> - massy, make both IObservableList<ILayer>
or just IList, like peter mentions. If we can keep it simple we should.
--- 2.2. BaseVectorLayer<TGeometry>, AnyGeometryVectorLayer, LinealVectorLayer, PolygonalVectorLayer, PuntalVectorLayer - do we really need it, it seems to duplicate VectorLayer? Is't it easier to use something like ISymbolizer in VectorLayer? (StrategyPattern,
define non-generic IGeometrySymbolizer or IGeometryRenderer for this to use in non-generic VectorLayer). BaseVectorLayer<> + derived layers sounds like an overkill (derived classes don't add a new behaviour really) compare to the VectorLayer.
It sounds like this should be simplified.
--- 2.3. VectorLayer.Themes - what is this?!? There is a Theme property already. If we need to remember a number of themes - it should be somewhere else.
In Mapsui I have a single IEnumerable<IStyle> where IStyle could be an IThemeStyle.
--- 3.1. FilterProvider - if we need filtering on provider leven - it must be added on IProvider and not like it is done now.
need to take a look
--- 3.2. BaseProvider - is it supposed to be used by all provider implementations? Currently SqlServer2008 and PreparedGeometryProvider use it and all other provider don't use it.What is PreparedGeometry, sounds like some implementation details?!?!
Lets remove it
--- Provider suffix in all IProvider implementations to avoid confusions?