]> git.openstreetmap.org Git - rails.git/blobdiff - public/javascripts/map.js
Make export tab work from non-view pages.
[rails.git] / public / javascripts / map.js
index 9a834593d996cb1377f0e72910c4faaced68d276..51cd9f6a5abfbc62abcf4c382825e59dad1e4e9b 100644 (file)
@@ -1,3 +1,4 @@
+var epsg4326 = new OpenLayers.Projection("EPSG:4326");
 var map;
 var markers;
 var popup;
@@ -16,6 +17,7 @@ function createMap(divName) {
          new OpenLayers.Control.PanZoomBar(),
          new OpenLayers.Control.ScaleLine()
       ],
+      maxResolution: 156543,
       units: "m"
    });
 
@@ -60,7 +62,7 @@ function getArrowIcon() {
 }
 
 function addMarkerToMap(position, icon, description) {
-   var marker = new OpenLayers.Marker(position, icon);
+   var marker = new OpenLayers.Marker(position.clone().transform(epsg4326, map.getProjectionObject()), icon);
 
    markers.addMarker(marker);
 
@@ -94,6 +96,22 @@ function removeMarkerFromMap(marker){
    markers.removeMarker(marker);
 }
 
+function getMapCenter(center, zoom) {
+   return map.getCenter().clone().transform(map.getProjectionObject(), epsg4326);
+}
+
+function setMapCenter(center, zoom) {
+   map.setCenter(center.clone().transform(epsg4326, map.getProjectionObject()), zoom);
+}
+
+function setMapExtent(extent) {
+   map.zoomToExtent(extent.clone().transform(epsg4326, map.getProjectionObject()));
+}
+
+function getEventPosition(event) {
+   return map.getLonLatFromViewPortPx(e.xy).clone().transform(epsg4326, map.getProjectionObject());
+}
+
 function getMapLayers() {
    var layers = "";
 
@@ -113,34 +131,19 @@ function getMapLayers() {
 function setMapLayers(layers) {
    for (var i=0; i < layers.length; i++) {
       var layer = map.layers[i];
-      var c = layers.charAt(i);
 
-      if (c == "B") {
-         map.setBaseLayer(layer);
-      } else if ( (c == "T") || (c == "F") ) {
-         layer.setVisibility(c == "T");
+      if (layer) {
+         var c = layers.charAt(i);
+
+         if (c == "B") {
+            map.setBaseLayer(layer);
+         } else if ( (c == "T") || (c == "F") ) {
+            layer.setVisibility(c == "T");
+         }
       }
    }
 }
 
-function mercatorToLonLat(merc) {
-   var lon = (merc.lon / 20037508.34) * 180;
-   var lat = (merc.lat / 20037508.34) * 180;
-
-   lat = 180/Math.PI * (2 * Math.atan(Math.exp(lat * Math.PI / 180)) - Math.PI / 2);
-
-   return new OpenLayers.LonLat(lon, lat);
-}
-
-function lonLatToMercator(ll) {
-   var lon = ll.lon * 20037508.34 / 180;
-   var lat = Math.log(Math.tan((90 + ll.lat) * Math.PI / 360)) / (Math.PI / 180);
-
-   lat = lat * 20037508.34 / 180;
-
-   return new OpenLayers.LonLat(lon, lat);
-}
-
 function scaleToZoom(scale) {
    return Math.log(360.0/(scale * 512.0)) / Math.log(2.0);
 }