[OpenLayers-Users] http protocol problem

Eric Lemoine eric.c2c at gmail.com
Fri Nov 7 13:01:49 EST 2008


Hi. Register a featuresadded listener on the layer and do:
this.map.zoomToExtent(this.getDataExtent()), where this references the
layer here. Eric

2008/11/7, Didrik Pinte <lists at dipole-consulting.com>:
> On Thu, 2008-11-06 at 10:40 -0700, Tim Schaub wrote:
>>
>> Yeah, the Fixed strategy sets the callback for protocol.read in this
>> case (when you are using the Fixed strategy).
>>
>> When you use the Fixed strategy, it means you want features requested
>> once and immediately added to your layer.  So, if you register a
>> listener for "featuresadded", you'll know when the read/parse/add
>> sequence is done.
>>
>> If you want to intervene (e.g. do something with the features before
>> they are added to the layer), you can register for
>> "beforefeaturesadded".  In this case, your listener will get an event
>> with a reference to the features bound for the layer.  If you modify
>> those features, they will be modified before they get added to the
>> layer.  If you want to remove features from that array, splice it.  If
>> you want to create your own array of features, just set event.features
>> again before your function returns.
>>
>> If you want to mess with the response before it is parsed, I'd like to
>> hear the reason.  There are good reasons, I'm just curious.  This is a
>> job for a callback from the filter (unless we want to start adding
>> events to our formats).  In either case, it will take work - but I think
>> it would make a good change.
>>
>> Tim
>
> Hi Tim,
>
> Thanks for the clear suggestions. Here is the explanation of what i'm
> doing.
> The callback I registered simply sets the extent of the map to the
> extent of the data loaded in the layer. It was as simple as
>
>     function jsonreturn(response) {
>
> vector_layer.addFeatures(protocol.parseFeatures(response.priv));
>        map.setCenter(vector_layer.getDataExtent().getCenterLonLat(),
>
> map.getZoomForExtent(vector_layer.getDataExtent(),false)-1, false,
> false);
>         map.setCenter(vector_layer.getDataExtent().getCenterLonLat());
>     }
>
> So without the Fixed strategy, it loads the data from the json stream
> and then recenters the map [1]. With the Fixed strategy, I would just
> recenter the map.
>
> It could be possible to register a callback on "beforefeaturesadded" but
> then features has to parsed to compute the bounding box ... that's not
> really elegant.
>
> Do you see a better solution ?
>
> Didrik
>
> [1] By the way, you see that there is two calls to map.setCenter. I
> don't know why but the first call adjust only the zoom level but do not
> recenter. Calling setCenter a second time just works ...
>



More information about the Users mailing list