1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
protocol: new OpenLayers.Protocol.Script({
url: "https://api.flickr.com/services/rest",
params: {
api_key: 'xxxx1c51b41f10ded499d38a',
format: 'json',
method: 'flickr.photos.search',
per_page: 500,
... // NB : j'ai enleve le parametre "page" : on va le calculer dynamiquement
},
createRequest: function(url, params, callback) {
var id = OpenLayers.Protocol.Script.register(callback);
var name = "OpenLayers.Protocol.Script.registry.regId" + id;
params = OpenLayers.Util.extend({}, params);
params[this.callbackKey] = this.callbackPrefix + name;
var paramsArray= [];
for (var key in params) {
var value = params[key];
paramsArray.push(encodeURIComponent(key) + "=" + value);
}
// Ajout du paramètre de pagination
if (this.page) paramsArray.push("page="+this.page) ;
params= paramsArray.join('&');
url = OpenLayers.Util.urlAppend(
url, params
);
var script = document.createElement("script");
script.type = "text/javascript";
script.src = url;
script.id = "OpenLayers_Protocol_Script_" + id;
this.pendingRequests[script.id] = script;
var head = document.getElementsByTagName("head")[0];
head.appendChild(script);
return script;
},
callback:function(r) {
if (r.code===OpenLayers.Protocol.Response.SUCCESS) {
// ici tu parses la réponse (à l'aide d'un OpenLayers.Format.Flickr), tu créées tes features que tu rajoutes à la couche
// et tu récupères le nombre de résultats dans une variable nbResults
...
var nbResults= ...
// y-a-t-il besoin de faire une nouvelle requete ?
if (!this.page) this.page=1 ;
if (this.page*500<nbResults) {
this.page++ ;
this.createRequest(this.url,this.params,this.callback) ; // on refait la requête après avoir augmenté le numéro de page
}
}
} |
Partager