Improve the layout of the object browser views.
[rails.git] / app / views / browse / _map.rhtml
1 <%= javascript_include_tag '/openlayers/OpenLayers.js' %>
2 <%= javascript_include_tag '/openlayers/OpenStreetMap.js' %>
3 <%= javascript_include_tag 'map.js' %>
4 <div id="small_map" style="width:250px; height: 300px; border: solid 1px black">
5 </div>
6 <span id="loading">Loading...</span>
7 <a id="larger_map" href=""></a>
8 <script type="text/javascript">
9   function init() {
10     var obj_type = "<%= type %>";
11     var obj_id = <%= id %>;
12     var url = "/api/<%= "#{API_VERSION}" %>/<%= type %>/<%= id %>";
13
14     if (obj_type != "node") {
15       url += "/full";
16     }
17
18     var map = createMap("small_map", {
19       controls: [ new OpenLayers.Control.Navigation() ]
20     });
21
22     var osm_layer = new OpenLayers.Layer.GML("OSM", url, {
23       format: OpenLayers.Format.OSM,
24       projection: new OpenLayers.Projection("EPSG:4326")
25     });
26
27     osm_layer.events.register("loadend", osm_layer, function() {
28       $("loading").innerHTML = "";
29
30       if (this.features.length) { 
31         var extent =  this.features[0].geometry.getBounds();
32
33         for (var i = 1; i < this.features.length; i++) {
34           extent.extend(this.features[i].geometry.getBounds());
35         }
36
37         if (extent) {
38           this.map.zoomToExtent(extent);
39         } else {
40           this.map.zoomToMaxExtent();
41         }
42
43         var center = getMapCenter();
44         $("larger_map").href = '/?lat='+center.lat+'&lon='+center.lon+'&zoom='+this.map.getZoom();
45         $("larger_map").innerHTML = "View Larger Map";
46       } else {
47         $("small_map").style.display = "none";
48       }
49     });
50
51     map.addLayer(osm_layer);
52
53     osm_layer.loadGML();
54     osm_layer.loaded = true;
55   }
56
57   window.onload = init;
58 </script>