rely on the Flickr APIs in the strategy-paging example
This commit is contained in:
@@ -10,20 +10,45 @@
|
|||||||
<script src="../lib/OpenLayers.js"></script>
|
<script src="../lib/OpenLayers.js"></script>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var map, photos, paging;
|
var map, photos, paging;
|
||||||
OpenLayers.ProxyHost = (window.location.host == "localhost") ?
|
|
||||||
"/cgi-bin/proxy.cgi?url=" : "proxy.cgi?url=";
|
/**
|
||||||
|
* A specific format for parsing Flickr API JSON responses.
|
||||||
|
*/
|
||||||
|
OpenLayers.Format.Flickr = OpenLayers.Class(OpenLayers.Format, {
|
||||||
|
read: function(obj) {
|
||||||
|
if(obj.stat === 'fail') {
|
||||||
|
throw new Error(
|
||||||
|
['Flickr failure response (',
|
||||||
|
obj.code,
|
||||||
|
'): ',
|
||||||
|
obj.message].join(''));
|
||||||
|
}
|
||||||
|
if(!obj || !obj.photos ||
|
||||||
|
!OpenLayers.Util.isArray(obj.photos.photo)) {
|
||||||
|
throw new Error(
|
||||||
|
'Unexpected Flickr response');
|
||||||
|
}
|
||||||
|
var photos = obj.photos.photo, photo,
|
||||||
|
x, y, point,
|
||||||
|
feature, features = [];
|
||||||
|
for(var i=0,l=photos.length; i<l; i++) {
|
||||||
|
photo = photos[i];
|
||||||
|
x = photo.longitude;
|
||||||
|
y = photo.latitude;
|
||||||
|
point = new OpenLayers.Geometry.Point(x, y);
|
||||||
|
feature = new OpenLayers.Feature.Vector(point, {
|
||||||
|
title: photo.title,
|
||||||
|
img_url: photo.url_s
|
||||||
|
});
|
||||||
|
features.push(feature);
|
||||||
|
}
|
||||||
|
return features;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
function init() {
|
function init() {
|
||||||
map = new OpenLayers.Map('map', {
|
map = new OpenLayers.Map('map');
|
||||||
restrictedExtent: new OpenLayers.Bounds(-180, -90, 180, 90)
|
var base = new OpenLayers.Layer.OSM();
|
||||||
});
|
|
||||||
var base = new OpenLayers.Layer.WMS("Imagery",
|
|
||||||
["http://t1.hypercube.telascience.org/tiles?",
|
|
||||||
"http://t2.hypercube.telascience.org/tiles?",
|
|
||||||
"http://t3.hypercube.telascience.org/tiles?",
|
|
||||||
"http://t4.hypercube.telascience.org/tiles?"],
|
|
||||||
{layers: 'landsat7'}
|
|
||||||
);
|
|
||||||
|
|
||||||
var style = new OpenLayers.Style({
|
var style = new OpenLayers.Style({
|
||||||
externalGraphic: "${img_url}",
|
externalGraphic: "${img_url}",
|
||||||
@@ -33,19 +58,21 @@
|
|||||||
paging = new OpenLayers.Strategy.Paging();
|
paging = new OpenLayers.Strategy.Paging();
|
||||||
|
|
||||||
photos = new OpenLayers.Layer.Vector("Photos", {
|
photos = new OpenLayers.Layer.Vector("Photos", {
|
||||||
|
projection: "EPSG:4326",
|
||||||
strategies: [new OpenLayers.Strategy.Fixed(), paging],
|
strategies: [new OpenLayers.Strategy.Fixed(), paging],
|
||||||
protocol: new OpenLayers.Protocol.HTTP({
|
protocol: new OpenLayers.Protocol.Script({
|
||||||
url: "http://labs.metacarta.com/flickrbrowse/flickr.py/flickr",
|
url: "http://api.flickr.com/services/rest",
|
||||||
params: {
|
params: {
|
||||||
format: "WFS",
|
api_key: 'b5e8c0e287e678671c3d8b2c0f3ced85',
|
||||||
sort: "interestingness-desc",
|
format: 'json',
|
||||||
service: "WFS",
|
method: 'flickr.photos.search',
|
||||||
request: "GetFeatures",
|
extras: 'geo,url_s',
|
||||||
srs: "EPSG:4326",
|
per_page: 100,
|
||||||
maxfeatures: 100,
|
page: 1,
|
||||||
bbox: [-180, -90, 180, 90]
|
bbox: [-180, -90, 180, 90]
|
||||||
},
|
},
|
||||||
format: new OpenLayers.Format.GML()
|
callbackKey: 'jsoncallback',
|
||||||
|
format: new OpenLayers.Format.Flickr()
|
||||||
}),
|
}),
|
||||||
styleMap: new OpenLayers.StyleMap(style)
|
styleMap: new OpenLayers.StyleMap(style)
|
||||||
});
|
});
|
||||||
@@ -66,7 +93,7 @@
|
|||||||
<body onload="init()">
|
<body onload="init()">
|
||||||
<h1 id="title">Paging Strategy Example</h1>
|
<h1 id="title">Paging Strategy Example</h1>
|
||||||
<div id="tags">
|
<div id="tags">
|
||||||
vector, feature, stylemap, wfs, paging, strategy, cleanup
|
vector, feature, stylemap, paging, strategy, flickr, script
|
||||||
</div>
|
</div>
|
||||||
<p id="shortdesc">
|
<p id="shortdesc">
|
||||||
Uses a paging strategy to cache large batches of features and render a page at a time.
|
Uses a paging strategy to cache large batches of features and render a page at a time.
|
||||||
@@ -81,6 +108,8 @@
|
|||||||
that do not support paging on the server. In this case, the protocol requests a
|
that do not support paging on the server. In this case, the protocol requests a
|
||||||
batch of 100 features, the strategy caches those and supplies a single
|
batch of 100 features, the strategy caches those and supplies a single
|
||||||
page at a time to the layer.</p>
|
page at a time to the layer.</p>
|
||||||
|
<p>This particular example uses the <a
|
||||||
|
href="http://www.flickr.com/services/api/">Flickr API.</a></p>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
Reference in New Issue
Block a user