Adding a protocol for reading features cross-origin from services that support JSON with a callback. r=erilem (closes #2956)
git-svn-id: http://svn.openlayers.org/trunk/openlayers@11691 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
35
examples/cross-origin.html
Normal file
35
examples/cross-origin.html
Normal file
@@ -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
examples/cross-origin.js
Normal file
39
examples/cross-origin.js
Normal file
@@ -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
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user