git-svn-id: http://svn.openlayers.org/trunk/openlayers@9302 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
218 lines
7.0 KiB
HTML
218 lines
7.0 KiB
HTML
<html>
|
|
<head>
|
|
<title>OpenLayers WMS Feature Info Example (GeoServer)</title>
|
|
<script src="../lib/OpenLayers.js"></script>
|
|
<link rel="stylesheet" href="../theme/default/style.css" type="text/css" />
|
|
<link rel="stylesheet" href="style.css" type="text/css" />
|
|
<style type="text/css">
|
|
ul, li {
|
|
padding-left: 0px;
|
|
margin-left: 0px;
|
|
list-style: none;
|
|
}
|
|
#info {
|
|
position: absolute;
|
|
top: 6em;
|
|
left: 550px;
|
|
}
|
|
#info table td {
|
|
border:1px solid #ddd;
|
|
border-collapse: collapse;
|
|
margin: 0;
|
|
padding: 0;
|
|
font-size: 90%;
|
|
padding: .2em .1em;
|
|
background:#fff;
|
|
}
|
|
#info table th{
|
|
padding:.2em .2em;
|
|
text-transform: uppercase;
|
|
font-weight: bold;
|
|
background: #eee;
|
|
}
|
|
tr.odd td {
|
|
background:#eee;
|
|
}
|
|
table.featureInfo caption {
|
|
text-align:left;
|
|
font-size:100%;
|
|
font-weight:bold;
|
|
text-transform:uppercase;
|
|
padding:.2em .2em;
|
|
}
|
|
|
|
|
|
</style>
|
|
<script defer="defer" type="text/javascript">
|
|
OpenLayers.ProxyHost = "proxy.cgi?url=";
|
|
|
|
var map, infocontrols, water, highlightlayer;
|
|
|
|
function load() {
|
|
map = new OpenLayers.Map('map', {
|
|
maxExtent: new OpenLayers.Bounds(143.834,-43.648,148.479,-39.573)
|
|
});
|
|
|
|
var political = new OpenLayers.Layer.WMS("State Boundaries",
|
|
"http://demo.opengeo.org/geoserver/wms",
|
|
{'layers': 'topp:tasmania_state_boundaries', transparent: true, format: 'image/gif'},
|
|
{isBaseLayer: true}
|
|
);
|
|
|
|
var roads = new OpenLayers.Layer.WMS("Roads",
|
|
"http://demo.opengeo.org/geoserver/wms",
|
|
{'layers': 'topp:tasmania_roads', transparent: true, format: 'image/gif'},
|
|
{isBaseLayer: false}
|
|
);
|
|
|
|
var cities = new OpenLayers.Layer.WMS("Cities",
|
|
"http://demo.opengeo.org/geoserver/wms",
|
|
{'layers': 'topp:tasmania_cities', transparent: true, format: 'image/gif'},
|
|
{isBaseLayer: false}
|
|
);
|
|
|
|
water = new OpenLayers.Layer.WMS("Bodies of Water",
|
|
"http://demo.opengeo.org/geoserver/wms",
|
|
{'layers': 'topp:tasmania_water_bodies', transparent: true, format: 'image/gif'},
|
|
{isBaseLayer: false}
|
|
);
|
|
|
|
highlightLayer = new OpenLayers.Layer.Vector("Highlighted Features", {
|
|
displayInLayerSwitcher: false,
|
|
isBaseLayer: false
|
|
}
|
|
);
|
|
|
|
infoControls = {
|
|
click: new OpenLayers.Control.WMSGetFeatureInfo({
|
|
url: 'http://demo.opengeo.org/geoserver/wms',
|
|
title: 'Identify features by clicking',
|
|
layers: [water],
|
|
queryVisible: true
|
|
}),
|
|
hover: new OpenLayers.Control.WMSGetFeatureInfo({
|
|
url: 'http://demo.opengeo.org/geoserver/wms',
|
|
title: 'Identify features by clicking',
|
|
layers: [water],
|
|
hover: true,
|
|
// defining a custom format options here
|
|
formatOptions: {
|
|
typeName: 'water_bodies',
|
|
featureNS: 'http://www.openplans.org/topp'
|
|
},
|
|
queryVisible: true
|
|
})
|
|
}
|
|
|
|
map.addLayers([political, roads, cities, water, highlightLayer]);
|
|
for (var i in infoControls) {
|
|
infoControls[i].events.register("getfeatureinfo", this, showInfo);
|
|
map.addControl(infoControls[i]);
|
|
}
|
|
|
|
map.addControl(new OpenLayers.Control.LayerSwitcher());
|
|
|
|
infoControls.click.activate();
|
|
map.zoomToMaxExtent();
|
|
}
|
|
|
|
function showInfo(evt) {
|
|
if (evt.features && evt.features.length) {
|
|
highlightLayer.destroyFeatures();
|
|
highlightLayer.addFeatures(evt.features);
|
|
highlightLayer.redraw();
|
|
} else {
|
|
$('responseText').innerHTML = evt.text;
|
|
}
|
|
}
|
|
|
|
function toggleControl(element) {
|
|
for (var key in infoControls) {
|
|
var control = infoControls[key];
|
|
if (element.value == key && element.checked) {
|
|
control.activate();
|
|
} else {
|
|
control.deactivate();
|
|
}
|
|
}
|
|
}
|
|
|
|
function toggleFormat(element) {
|
|
for (var key in infoControls) {
|
|
var control = infoControls[key];
|
|
control.infoFormat = element.value;
|
|
}
|
|
}
|
|
|
|
function toggleLayers(element) {
|
|
for (var key in infoControls) {
|
|
var control = infoControls[key];
|
|
if (element.value == 'Specified') {
|
|
control.layers = [water];
|
|
} else {
|
|
control.layers = null;
|
|
}
|
|
}
|
|
}
|
|
|
|
// function toggle(key
|
|
</script>
|
|
</head>
|
|
<body onload="load()">
|
|
<h1 id="title">Feature Info Example</h1>
|
|
|
|
<div id="tags"></div>
|
|
|
|
<p id="shortdesc">
|
|
Demonstrates the WMSGetFeatureInfo control for fetching information about a position from WMS (via GetFeatureInfo request).
|
|
</p>
|
|
|
|
<div id="info">
|
|
<h1>Tasmania</h1>
|
|
<p>Click on the map to get feature info.</p>
|
|
<div id="responseText">
|
|
</div>
|
|
</div>
|
|
<div id="map" class="smallmap"></div>
|
|
|
|
<div id="docs">
|
|
</div>
|
|
<ul id="control">
|
|
<li>
|
|
<input type="radio" name="controlType" value="click" id="click"
|
|
onclick="toggleControl(this);" checked="checked" />
|
|
<label for="click">Click</label>
|
|
</li>
|
|
<li>
|
|
<input type="radio" name="controlType" value="hover" id="hover"
|
|
onclick="toggleControl(this);" />
|
|
<label for="hover">Hover</label>
|
|
</li>
|
|
</ul>
|
|
<ul id="format">
|
|
<li>
|
|
<input type="radio" name="formatType" value="text/html" id="html"
|
|
onclick="toggleFormat(this);" checked="checked" />
|
|
<label for="html">Show HTML Description</label>
|
|
</li>
|
|
<li>
|
|
<input type="radio" name="formatType" value="application/vnd.ogc.gml" id="highlight"
|
|
onclick="toggleFormat(this);" />
|
|
<label for="highlight">Highlight Feature on Map</label>
|
|
</li>
|
|
</ul>
|
|
<ul id="layers">
|
|
<li>
|
|
<input type="radio" name="layerSelection" value="Specified" id="Specified"
|
|
onclick="toggleLayers(this);" checked="checked" />
|
|
<label for="Specified">Get water body info</label>
|
|
</li>
|
|
<li>
|
|
<input type="radio" name="layerSelection" value="Auto" id="Auto"
|
|
onclick="toggleLayers(this);" />
|
|
<label for="Auto">Get info for visible layers</label>
|
|
</li>
|
|
</ul>
|
|
</body>
|
|
</html>
|