Widget:OP
De Wikiexplora
Revisión del 17:04 4 dic 2018 de Dan (Discusión | contribuciones) (Página creada con « <html> <head><title>OpenLayers KML Example</title></head> <body> <div id="mapdiv"></div> <script src="https://cdnjs.cloudflare.com/ajax/libs/openlayers/2.11/lib/Op...»)
<html>
<head><title>OpenLayers KML Example</title></head> <body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/openlayers/2.11/lib/OpenLayers.js"></script> <script> map = new OpenLayers.Map("mapdiv"); map.addLayer(new OpenLayers.Layer.OSM()); var kmllayer = new OpenLayers.Layer.Vector("KML", { strategies: [new OpenLayers.Strategy.Fixed()], protocol: new OpenLayers.Protocol.HTTP({ url: "./mapperz-kml-example.kml", format: new OpenLayers.Format.KML({ extractStyles: true, extractAttributes: true, maxDepth: 2 }) }) }); map.addLayer(kmllayer); //Set start centrepoint and zoom //TODO: Is it possible to just zoom to extents of KML objects instead? var lonLat = new OpenLayers.LonLat( -0.1279688 ,51.5077286 ) .transform( new OpenLayers.Projection("EPSG:4326"), // transform from WGS 1984 map.getProjectionObject() // to Spherical Mercator Projection ); var zoom=14; map.setCenter (lonLat, zoom); //Add a selector control to the kmllayer with popup functions var controls = { selector: new OpenLayers.Control.SelectFeature(kmllayer, { onSelect: createPopup, onUnselect: destroyPopup }) };
function createPopup(feature) { feature.popup = new OpenLayers.Popup.FramedCloud("pop", feature.geometry.getBounds().getCenterLonLat(), null,'
'+feature.attributes.description+'
',
null, true, function() { controls['selector'].unselectAll(); } ); //feature.popup.closeOnMove = true; map.addPopup(feature.popup); }
function destroyPopup(feature) { feature.popup.destroy(); feature.popup = null; } map.addControl(controls['selector']); controls['selector'].activate(); </script>
Populate vector layer with data from a KML file.
Also bind popup events to the display the description attributes. The KML file (this example taken from <a href="http://mapperz.blogspot.co.uk">mapperz</a>originally) must be served under the same domain name.
</body></html>