Hey-

I think we would all agree that we could start strict, make sure we cover all the functionality we want with a clean API, and then begin a discussion about convenience.

The key part for me starting out is that we agree that map properties rule (already agreed) and get rid of all the coupled default properties (projection is related to units and extent and resolutions).

If we require just "projection" as a map config property to start, we can get most of what we need by providing a lookup of units and valid extent for common CRS identifiers.

Whether we go with Paul's suggestion of map sub-classes, provide factory functions for common configurations, or bake in some more magic is up for discussion later.

I know I started with the masterLayerIndex suggestion at the sprint. This was largely prompted by Chris' (valid) suggestion for Google layer convenience. I think now that it makes sense to defer this discussion until a bit more is implemented.

Tim

On 9/23/10 9:34 AM, Paul Spencer wrote:
Hi Eric,

On 2010-09-23, at 1:22 AM, Eric Lemoine wrote:

On Thursday, September 23, 2010, Paul Spencer<pspen...@dmsolutions.ca>  wrote:
Hi Eric and others,

Hi Paul

I'm just catching up on this thread and I have some comments that I would like 
to add.

I'd really like to see 3.0 put control into the hands of the map and do away 
with 'magic' behaviour.  I think there are other ways to provide convenience 
(define a new map sub-class with the appropriate projection/resolutions for 
instance) without breaking a nice clean API.  So for the record, I think it 
should be required to provide the projection when defining a map and not 
magically pick it up from some sort of special layer.

Determining ways to provide convenience is key to the discussion. At
this point I have no other solution than having
fixed-projection/resolutions layers determine the map projection and
resolutions. I'm interesting in other ways.

I guess I feel that if there is a magic layer that can override the map then we 
haven't really made any fundamental change from the 2.x baseLayer concept.  I 
understand that this is entirely optional but I think will be a source of 
confusion in the long run.  Just adding a layer to a Map should not change the 
fundamental behaviour of the Map.

My counter proposal to master layers would be to introduce sub-classes of Map 
that are pre-configured for some scenarios or preset blocks of options that can 
be passed to a Map constructor.  This might look like:

var map = new OpenLayers.Map.Google({
   // additional user options
});

or

var options = OpenLayers.Util.extend(OpenLayers.Config.Google, {
   // additional user options
});
var map = new OpenLayers.Map(options);

or

var map = new OpenLayers.Map({
   config: OpenLayers.Config.Google
   // additional user options
});

In both cases, it is clear that the *Map* is going to be configured 
Google-style with preset resolutions, projection etc.

BTW I'm not sure that having OpenLayers.Map.Google is the right naming choice 
:)  Probably preset config objects would be a better way to go.



Also, I'm not convinced that introducing the concept of master layers and 
master groups is a good thing.  I think there are some very straight-forward 
rules that can be applied to a layer to determine if it should be displayed at 
the current resolution and there is no need to add the concept of mutual 
exclusion in the core library (i.e. can it display at this resolution, can it 
be displayed in the current projection, is it within maxExtent).

The goal of layer groups isn't related to resolutions, maxExtent, etc.
It is just a way for the user to create mutually exclusive layers, and
have radio buttons in the layer tree.

I think layer groups should not be handled in the core API, but rather in the 
UI component of the library.  I can definitely see the utility in being able to 
define groups of mutually exclusive layers, though.

Cheers

Paul

The "master" group just aims to identify master layers.

And I'd like to say again that the map doesn't require a master layer.
If there's no master layer the map determines the projection and
resolutions.

User controls and the application developer should handle this kind of thing.  
From the point of view of the library, it shouldn't matter if there is more 
than one non-transparent layer displayed on top of each other and it (the 
library) should not prevent it.

Agreed. I think the proposed design does go in that direction. It just
introduces master layers to provide convenience when working with
fixed-projection/resolutions layers. And, with the proposed design,
the user can even use fixed-resolutions/projection layers without them
being master layers, by just not making them part of the "master"
group (new Google("gmap", {group: null}).

Again, if you have other ways to provide convenience I'm interested.

Thanks a lot for you feedback Paul!

--
Eric Lemoine

Camptocamp France SAS
Savoie Technolac, BP 352
73377 Le Bourget du Lac, Cedex

Tel : 00 33 4 79 44 44 96
Mail : eric.lemo...@camptocamp.com
http://www.camptocamp.com


__________________________________________

    Paul Spencer
    Chief Technology Officer
    DM Solutions Group Inc
    http://research.dmsolutions.ca/

_______________________________________________
Dev mailing list
d...@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/openlayers-dev


--
Tim Schaub
OpenGeo - http://opengeo.org
Expert service straight from the developers.
_______________________________________________
Dev mailing list
d...@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/openlayers-dev

Reply via email to