1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 | <html xmlns="http://www.w3.org/1999/xhtml"> <!-- /* * Copyright 2010,2011 Alexander Sadleir Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ --> <head> <script src="openlayers/OpenLayers.js"></script> <SCRIPT TYPE="text/javascript" SRC="OpenStreetMap.js"></SCRIPT> <script type="text/javascript"> var map,select; function init() { var extent = new OpenLayers.Bounds(148.98, -35.48, 149.25, -35.15); // set up the map options var options = { maxExtent: extent, numZoomLevels: 20, }; // create the ol map object map = new OpenLayers.Map('map', options); var osmtiles = new OpenLayers.Layer.OSM("OSM"); var nearmap = new OpenLayers.Layer.OSM.NearMap("NearMap"); var stopbrowser = new OpenLayers.Layer.Vector("POI", { projection: new OpenLayers.Projection("EPSG:4326"), strategies: [ new OpenLayers.Strategy.BBOX(), ], protocol: new OpenLayers.Protocol.HTTP({ url: "stopBrowser.kml.php", //Note that it is probably worth adding a Math.random() on the end of the URL to stop caching. format: new OpenLayers.Format.KML({ extractStyles: true, extractAttributes: true }), }) }); map.addLayers([osmtiles,stopbrowser,nearmap]); var lonLat = new OpenLayers.LonLat(149.11, -35.28).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject()); map.setCenter(lonLat, 15); map.addControl( new OpenLayers.Control.LayerSwitcher({'ascending':false})); map.addControl(new OpenLayers.Control.MousePosition( { displayProjection: new OpenLayers.Projection("EPSG:4326"), suffix: "__________________________________" })); map.addControl(new OpenLayers.Control.MousePosition( { displayProjection: new OpenLayers.Projection("EPSG:900913") })); select = new OpenLayers.Control.SelectFeature(stopbrowser); stopbrowser.events.on({ "featureselected": onFeatureSelect, "featureunselected": onFeatureUnselect }); map.addControl(select); select.activate(); } function onPopupClose(evt) { select.unselectAll(); } function onFeatureSelect(event) { var feature = event.feature; // Since KML is user-generated, do naive protection against // Javascript. var content = "<h2>"+feature.attributes.name + "</h2>" + feature.attributes.description; if (content.search("<script") != -1) { content = "Content contained Javascript! Escaped content below.<br />" + content.replace(/</g, "<"); } popup = new OpenLayers.Popup.FramedCloud("chicken", feature.geometry.getBounds().getCenterLonLat(), new OpenLayers.Size(100,100), content, 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()"> <div id="map" width="100%" height="100%" class="smallmap"></div> </body> </html> |