Skip to content

Commit

Permalink
Adding a protocol for reading features cross-origin from services tha…
Browse files Browse the repository at this point in the history
…t support JSON with a callback. r=erilem (closes #2956)

git-svn-id: http://svn.openlayers.org/trunk/openlayers@11691 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
  • Loading branch information
tschaub committed Mar 10, 2011
1 parent 545c001 commit 27da366
Show file tree
Hide file tree
Showing 6 changed files with 710 additions and 0 deletions.
35 changes: 35 additions & 0 deletions examples/cross-origin.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
<!DOCTYPE html>
<html>
<head>
<title>OpenLayers Script Protocol Example</title>
<link rel="stylesheet" href="../theme/default/style.css" type="text/css">
<link rel="stylesheet" href="style.css" type="text/css">
<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<script src="../lib/OpenLayers.js"></script>
</head>
<body>
<h1 id="title">Script Protocol</h1>
<div id="tags">
protocol, script, cross origin, advanced
</div>
<p id="shortdesc">
Demonstrates the use of a script protocol for making feature requests
cross origin.
</p>
<div id="map" class="smallmap"></div>
<div id="docs">
<p>
In cases where a service returns serialized features and accepts
a named callback (e.g. http://example.com/features.json?callback=foo),
the script protocol can be used to read features without being
restricted by the same origin policy.
</p>
<p>
View the <a href="cross-origin.js" target="_blank">cross-origin.js</a>
source to see how this is done
</p>
</div>
<script src="cross-origin.js"></script>
</body>
</html>
39 changes: 39 additions & 0 deletions examples/cross-origin.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
var map = new OpenLayers.Map({
div: "map",
layers: [
new OpenLayers.Layer.WMS(
"World Map",
"http://maps.opengeo.org/geowebcache/service/wms",
{layers: "bluemarble"}
),
new OpenLayers.Layer.Vector("States", {
strategies: [new OpenLayers.Strategy.BBOX()],
protocol: new OpenLayers.Protocol.Script({
url: "http://suite.opengeo.org/geoserver/wfs",
callbackKey: "format_options",
callbackPrefix: "callback:",
params: {
service: "WFS",
version: "1.1.0",
srsName: "EPSG:4326",
request: "GetFeature",
typeName: "world:cities",
outputFormat: "json"
},
filterToParams: function(filter, params) {
// example to demonstrate BBOX serialization
if (filter.type === OpenLayers.Filter.Spatial.BBOX) {
params.bbox = filter.value.toArray();
if (filter.projection) {
params.bbox.push(filter.projection.getCode());
}
}
return params;
}
})
})
],
center: new OpenLayers.LonLat(0, 0),
zoom: 1
});

1 change: 1 addition & 0 deletions lib/OpenLayers.js
Original file line number Diff line number Diff line change
Expand Up @@ -252,6 +252,7 @@
"OpenLayers/Protocol/WFS/v1.js",
"OpenLayers/Protocol/WFS/v1_0_0.js",
"OpenLayers/Protocol/WFS/v1_1_0.js",
"OpenLayers/Protocol/Script.js",
"OpenLayers/Protocol/SOS.js",
"OpenLayers/Protocol/SOS/v1_0_0.js",
"OpenLayers/Layer/PointTrack.js",
Expand Down
Loading

0 comments on commit 27da366

Please sign in to comment.