How can I add additional data layers to this code? I tried using "map = new OpenLayers.Map('map', options);" again and set up a tiled layer for buildings exactly as it has been done for roads but not working when I add this one more time after the code for roads.
map = new OpenLayers.Map('map', options);
tiled = new OpenLayers.Layer.WMS(
"Town:buildings - Tiled", "http://localhost:8080/geoserver/Town/wms",
{
Also I have tried to refer to Google Maps but those are not appearing, would be great to have those too.
Here the code for roads only that works:
<html>
<head>
<title>Map</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
body {
font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
font-size: small;
}
#toolbar {
position: relative;
padding-bottom: 0.5em;
display: none;
}
#map {
clear: both;
position: relative;
width: 337px;
height: 512px;
border: 2px solid black;
}
#wrapper {
width: 337px;
height: 50px;
}
#location {
float: right;
font-family: Arial, Verdana, sans-serif;
font-size: 12px;
color: #483D8B;
background-color: white;
}
#scale {
float:left;
font-family: Arial, Verdana, sans-serif;
font-size: 12px;
color: #483D8B;
background-color: white;
}
#nodelist{
font-family: Arial, Verdana, sans-serif;
font-size: 14px;
color: #000000;
font-style: normal;
background-color: white;
}
</style>
<script type="text/javascript" src="http://www.openlayers.org/api/OpenLayers.js"></script>
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script type="text/javascript" src="http://www.openstreetmap.org/openlayers/OpenStreetMap.js"></script>
<link rel="stylesheet" href="ol.css" type="text/css">
<script src="ZoomToMaxExtent.js"></script>
<script src="ScaleBar.js"></script>
<script src="deprecated.js" type="text/javascript"></script>
<script defer="defer" type="text/javascript">
var map;
var untiled;
var tiled;
var pureCoverage = false;
// pink tile avoidance
OpenLayers.IMAGE_RELOAD_ATTEMPTS = 5;
// make OL compute scale according to WMS spec
OpenLayers.DOTS_PER_INCH = 25.4 / 0.28;
function setStyle(style){
// change styles
if(tiled == null)
return;
tiled.mergeNewParams({
styles: style
});
//untiled.mergeNewParams({
//styles: style
//});
}
function init(){
var webMercator=new OpenLayers.Projection("EPSG:3857");
var wgs84=new OpenLayers.Projection("EPSG:4326");
function setHTML(response){
document.getElementById('nodelist').innerHTML = response.responseText;
//alert(response.responseText);
};
format = 'image/png';
var bounds = new OpenLayers.Bounds(
//parameters
1459539.4919039696,7494309.59376287,
1476431.8743550738,7510333.642999968
);
var options = {
controls: [],
maxExtent: bounds,
//parameters
maxResolution: 156543.0399,
projection: "EPSG:3857",
numZoomLevels:16,
units: 'm'
};
map = new OpenLayers.Map('map', options);
// setup tiled layer
tiled = new OpenLayers.Layer.WMS(
"Town:roads - Tiled", "http://localhost:8080/geoserver/Town/wms",
{
height: '485',
width: '512',
layers: 'Town:roads',
styles: '',
srs: 'EPSG:3857',
format: format,
tiled: 'true',
tilesOrigin : map.maxExtent.left + ',' + map.maxExtent.bottom
},
{
buffer: 0,
displayOutsideMaxExtent: true
}
);
//controls
map.addControl(new OpenLayers.Control.LayerSwitcher());
map.addControl(new OpenLayers.Control.PanZoomBar());
zf= new OpenLayers.Control.ZoomToMaxExtent({title:"Zoom to max extent"});
var panel= new OpenLayers.Control.Panel({defaultControl:zf});
panel.addControls([zf]);
map.addControl(panel);
map.addControl(new OpenLayers.Control.OverviewMap());
map.addControl(new OpenLayers.Control.Navigation());
map.addControl(new OpenLayers.Control.MousePosition({element: $('location')}));
map.addControl(new OpenLayers.Control.Scale($('scale')));
map.addControl(new OpenLayers.Control.ScaleLine({bottomOutUnits: ''}));
map.addLayer(tiled);
map.zoomToExtent(bounds);
}
</script>
</head>
<body onload="init()">
Map
<br><br>
<div id="map">
</div>
<br>
<div id="wrapper">
<div id="location">location</div>
<br>
<div id="scale">
</div>
</div>
<br>
<div id="nodelist" >
</div>
</body>
</html>
Best Answer
Note where you create the tiled varaible:
Then you add the tiled layer to the map:
Simply create a new variable, say buildings, and edit the settings accordingly:
Be Aware the above is just an example. You may need to make additional changes.