git-svn-id: http://svn.openlayers.org/trunk/openlayers@11158 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
111 lines
4.1 KiB
HTML
111 lines
4.1 KiB
HTML
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<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" />
|
|
<title>OpenLayers: Sundials on a Spherical Mercator Map</title>
|
|
<script src='http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAjpkAC9ePGem0lIq5XcMiuhR_wWLPFku8Ix9i2SXYRVK3e45q1BQUd_beF8dtzKET_EteAjPdGDwqpQ'></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">
|
|
#map {
|
|
width: 100%;
|
|
height: 80%;
|
|
border: 1px solid black;
|
|
}
|
|
.olPopup p { margin:0px; font-size: .9em;}
|
|
.olPopup h2 { font-size:1.2em; }
|
|
</style>
|
|
<script src="../lib/OpenLayers.js"></script>
|
|
<script type="text/javascript">
|
|
var lon = 5;
|
|
var lat = 40;
|
|
var zoom = 5;
|
|
var map, select;
|
|
|
|
function init(){
|
|
var options = {
|
|
projection: new OpenLayers.Projection("EPSG:900913"),
|
|
displayProjection: new OpenLayers.Projection("EPSG:4326"),
|
|
units: "m",
|
|
maxResolution: 156543.0339,
|
|
maxExtent: new OpenLayers.Bounds(-20037508.34, -20037508.34,
|
|
20037508.34, 20037508.34)
|
|
};
|
|
map = new OpenLayers.Map('map', options);
|
|
var mapnik = new OpenLayers.Layer.OSM("OpenStreetMap (Mapnik)");
|
|
var gmap = new OpenLayers.Layer.Google("Google", {sphericalMercator:true});
|
|
var sundials = new OpenLayers.Layer.Vector("KML", {
|
|
projection: map.displayProjection,
|
|
strategies: [new OpenLayers.Strategy.Fixed()],
|
|
protocol: new OpenLayers.Protocol.HTTP({
|
|
url: "kml/sundials.kml",
|
|
format: new OpenLayers.Format.KML({
|
|
extractStyles: true,
|
|
extractAttributes: true
|
|
})
|
|
})
|
|
});
|
|
|
|
map.addLayers([mapnik, gmap, sundials]);
|
|
|
|
select = new OpenLayers.Control.SelectFeature(sundials);
|
|
|
|
sundials.events.on({
|
|
"featureselected": onFeatureSelect,
|
|
"featureunselected": onFeatureUnselect
|
|
});
|
|
|
|
map.addControl(select);
|
|
select.activate();
|
|
|
|
map.addControl(new OpenLayers.Control.LayerSwitcher());
|
|
|
|
map.zoomToExtent(
|
|
new OpenLayers.Bounds(
|
|
68.774414, 11.381836, 123.662109, 34.628906
|
|
).transform(map.displayProjection, map.projection)
|
|
);
|
|
}
|
|
function onPopupClose(evt) {
|
|
select.unselectAll();
|
|
}
|
|
function onFeatureSelect(event) {
|
|
var feature = event.feature;
|
|
var selectedFeature = feature;
|
|
var popup = new OpenLayers.Popup.FramedCloud("chicken",
|
|
feature.geometry.getBounds().getCenterLonLat(),
|
|
new OpenLayers.Size(100,100),
|
|
"<h2>"+feature.attributes.name + "</h2>" + feature.attributes.description,
|
|
null, true, onPopupClose
|
|
);
|
|
feature.popup = popup;
|
|
map.addPopup(popup);
|
|
}
|
|
function onFeatureUnselect(event) {
|
|
var feature = event.feature;
|
|
if(feature.popup) {
|
|
map.removePopup(feature.popup);
|
|
feature.popup.destroy();
|
|
delete feature.popup;
|
|
}
|
|
}
|
|
</script>
|
|
</head>
|
|
<body onload="init()">
|
|
<h1 id="title">OSM + Google Maps + KML Reprojection</h1>
|
|
|
|
<div id="tags">
|
|
osm, kml, spherical, mercator, reprojection, feature, popup, advanced
|
|
</div>
|
|
|
|
<p id="shortdesc">
|
|
Demonstrates loading and displaying a KML file on top of OpenStreetMap (OSM) and Google Maps data. Loads data from a KML file of sundials.
|
|
</p>
|
|
|
|
<div id="map" class="smallmap"></div>
|
|
|
|
<div id="docs"></div>
|
|
</body>
|
|
</html>
|