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 ...
signature.asc
Description: This is a digitally signed message part
_______________________________________________ Users mailing list [email protected] http://openlayers.org/mailman/listinfo/users
