git-svn-id: http://svn.openlayers.org/trunk/openlayers@8251 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
181 lines
6.8 KiB
HTML
181 lines
6.8 KiB
HTML
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<title>OpenLayers: Spherical Mercator</title>
|
|
<link rel="stylesheet" href="../theme/default/style.css" type="text/css" />
|
|
<link rel="stylesheet" href="style.css" type="text/css" />
|
|
<style type="text/css">
|
|
.olControlAttribution { bottom: 0px!important }
|
|
#map {
|
|
height: 512px;
|
|
}
|
|
</style>
|
|
|
|
<script src='http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.1'></script>
|
|
<script src='http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAjpkAC9ePGem0lIq5XcMiuhR_wWLPFku8Ix9i2SXYRVK3e45q1BQUd_beF8dtzKET_EteAjPdGDwqpQ'></script>
|
|
<script src="http://api.maps.yahoo.com/ajaxymap?v=3.0&appid=euzuro-openlayers"></script>
|
|
|
|
<script src="../lib/OpenLayers.js"></script>
|
|
<script type="text/javascript">
|
|
|
|
// make map available for easy debugging
|
|
var map;
|
|
|
|
// avoid pink tiles
|
|
OpenLayers.IMAGE_RELOAD_ATTEMPTS = 3;
|
|
OpenLayers.Util.onImageLoadErrorColor = "transparent";
|
|
|
|
function init(){
|
|
var options = {
|
|
projection: new OpenLayers.Projection("EPSG:900913"),
|
|
displayProjection: new OpenLayers.Projection("EPSG:4326"),
|
|
units: "m",
|
|
numZoomLevels: 18,
|
|
maxResolution: 156543.0339,
|
|
maxExtent: new OpenLayers.Bounds(-20037508, -20037508,
|
|
20037508, 20037508.34)
|
|
};
|
|
map = new OpenLayers.Map('map', options);
|
|
|
|
// create Google Mercator layers
|
|
var gmap = new OpenLayers.Layer.Google(
|
|
"Google Streets",
|
|
{'sphericalMercator': true}
|
|
);
|
|
var gsat = new OpenLayers.Layer.Google(
|
|
"Google Satellite",
|
|
{type: G_SATELLITE_MAP, 'sphericalMercator': true, numZoomLevels: 22}
|
|
);
|
|
var ghyb = new OpenLayers.Layer.Google(
|
|
"Google Hybrid",
|
|
{type: G_HYBRID_MAP, 'sphericalMercator': true}
|
|
);
|
|
|
|
// create Virtual Earth layers
|
|
var veroad = new OpenLayers.Layer.VirtualEarth(
|
|
"Virtual Earth Roads",
|
|
{'type': VEMapStyle.Road, 'sphericalMercator': true}
|
|
);
|
|
var veaer = new OpenLayers.Layer.VirtualEarth(
|
|
"Virtual Earth Aerial",
|
|
{'type': VEMapStyle.Aerial, 'sphericalMercator': true}
|
|
);
|
|
var vehyb = new OpenLayers.Layer.VirtualEarth(
|
|
"Virtual Earth Hybrid",
|
|
{'type': VEMapStyle.Hybrid, 'sphericalMercator': true}
|
|
);
|
|
|
|
// create Yahoo layer
|
|
var yahoo = new OpenLayers.Layer.Yahoo(
|
|
"Yahoo Street",
|
|
{'sphericalMercator': true}
|
|
);
|
|
var yahoosat = new OpenLayers.Layer.Yahoo(
|
|
"Yahoo Satellite",
|
|
{'type': YAHOO_MAP_SAT, 'sphericalMercator': true}
|
|
);
|
|
var yahoohyb = new OpenLayers.Layer.Yahoo(
|
|
"Yahoo Hybrid",
|
|
{'type': YAHOO_MAP_HYB, 'sphericalMercator': true}
|
|
);
|
|
|
|
// create OSM layer
|
|
var mapnik = new OpenLayers.Layer.TMS(
|
|
"OpenStreetMap (Mapnik)",
|
|
"http://tile.openstreetmap.org/",
|
|
{
|
|
type: 'png', getURL: osm_getTileURL,
|
|
displayOutsideMaxExtent: true,
|
|
attribution: '<a href="http://www.openstreetmap.org/">OpenStreetMap</a>'
|
|
}
|
|
);
|
|
// create OAM layer
|
|
var oam = new OpenLayers.Layer.TMS(
|
|
"OpenAerialMap",
|
|
"http://tile.openaerialmap.org/tiles/1.0.0/openaerialmap-900913/",
|
|
{
|
|
type: 'png', getURL: osm_getTileURL
|
|
}
|
|
);
|
|
|
|
// create OSM layer
|
|
var mapnik = new OpenLayers.Layer.TMS(
|
|
"OpenStreetMap (Mapnik)",
|
|
"http://a.tile.openstreetmap.org/",
|
|
{
|
|
type: 'png', getURL: osm_getTileURL,
|
|
displayOutsideMaxExtent: true,
|
|
attribution: '<a href="http://www.openstreetmap.org/">OpenStreetMap</a>'
|
|
}
|
|
);
|
|
// create OSM layer
|
|
var osmarender = new OpenLayers.Layer.TMS(
|
|
"OpenStreetMap (Tiles@Home)",
|
|
"http://tah.openstreetmap.org/Tiles/tile/",
|
|
{
|
|
type: 'png', getURL: osm_getTileURL,
|
|
displayOutsideMaxExtent: true,
|
|
attribution: '<a href="http://www.openstreetmap.org/">OpenStreetMap</a>'
|
|
}
|
|
);
|
|
|
|
|
|
// create WMS layer
|
|
var wms = new OpenLayers.Layer.WMS(
|
|
"World Map",
|
|
"http://world.freemap.in/tiles/",
|
|
{'layers': 'factbook-overlay', 'format':'png'},
|
|
{
|
|
'opacity': 0.4,
|
|
'isBaseLayer': false,'wrapDateLine': true
|
|
}
|
|
);
|
|
|
|
// create a vector layer for drawing
|
|
var vector = new OpenLayers.Layer.Vector("Editable Vectors");
|
|
|
|
map.addLayers([gmap, gsat, ghyb, veroad, veaer, vehyb,
|
|
yahoo, yahoosat, yahoohyb, oam, mapnik, osmarender,
|
|
wms, vector]);
|
|
map.addControl(new OpenLayers.Control.LayerSwitcher());
|
|
map.addControl(new OpenLayers.Control.EditingToolbar(vector));
|
|
map.addControl(new OpenLayers.Control.Permalink());
|
|
map.addControl(new OpenLayers.Control.MousePosition());
|
|
if (!map.getCenter()) {map.zoomToMaxExtent()}
|
|
}
|
|
|
|
function osm_getTileURL(bounds) {
|
|
var res = this.map.getResolution();
|
|
var x = Math.round((bounds.left - this.maxExtent.left) / (res * this.tileSize.w));
|
|
var y = Math.round((this.maxExtent.top - bounds.top) / (res * this.tileSize.h));
|
|
var z = this.map.getZoom();
|
|
var limit = Math.pow(2, z);
|
|
|
|
if (y < 0 || y >= limit) {
|
|
return OpenLayers.Util.getImagesLocation() + "404.png";
|
|
} else {
|
|
x = ((x % limit) + limit) % limit;
|
|
return this.url + z + "/" + x + "/" + y + "." + this.type;
|
|
}
|
|
}
|
|
|
|
</script>
|
|
</head>
|
|
<body onload="init()">
|
|
<h1 id="title">OpenLayers Spherical Mercator Example</h1>
|
|
|
|
<div id="tags">
|
|
</div>
|
|
<p id="shortdesc">
|
|
Shows the use of the Spherical Mercator Layers, for overlaying
|
|
Google, Yahoo, Microsoft, and other layers with WMS and TMS tiles.
|
|
</p>
|
|
<div id="map" class="smallmap"></div>
|
|
|
|
<div id="docs">
|
|
</div>
|
|
</body>
|
|
</html>
|
|
|
|
|
|
|