}
function addMarkerToMap(position, icon, description) {
- var marker = new OpenLayers.Marker(position.clone().transform(epsg4326, map.getProjectionObject()), icon);
+ var marker = new OpenLayers.Marker(proj(position), icon);
markers.addMarker(marker);
if (description) {
- marker.events.register("mouseover", marker, function() { openMapPopup(marker, description) });
+ marker.events.register("mouseover", marker, function() {
+ openMapPopup(marker, description);
+ });
}
return marker;
if (outline) {
vertices = boxbounds.toGeometry().getVertices();
vertices.push(new OpenLayers.Geometry.Point(vertices[0].x, vertices[0].y));
- geometry = new OpenLayers.Geometry.LineString(vertices).transform(epsg4326, map.getProjectionObject());
+ geometry = proj(new OpenLayers.Geometry.LineString(vertices));
} else {
- geometry = boxbounds.toGeometry().transform(epsg4326, map.getProjectionObject());
+ geometry = proj(boxbounds.toGeometry());
}
var box = new OpenLayers.Feature.Vector(geometry, {}, {
strokeWidth: 2,
vectors.removeFeature(box);
}
-function getMapCenter() {
- return map.getCenter().clone().transform(map.getProjectionObject(), epsg4326);
+function proj(x) {
+ return x.clone().transform(epsg4326, map.getProjectionObject());
+}
+
+function unproj(x) {
+ return x.clone().transform(map.getProjectionObject(), epsg4326);
}
function setMapCenter(center, zoom) {
- zoom = parseInt(zoom);
+ zoom = parseInt(zoom, 10);
var numzoom = map.getNumZoomLevels();
if (zoom >= numzoom) zoom = numzoom - 1;
- map.setCenter(center.clone().transform(epsg4326, map.getProjectionObject()), zoom);
-}
-
-function setMapExtent(extent) {
- map.zoomToExtent(extent.clone().transform(epsg4326, map.getProjectionObject()));
-}
-
-function getMapExtent() {
- return map.getExtent().clone().transform(map.getProjectionObject(), epsg4326);
-}
-
-function getMapZoom() {
- return map.getZoom();
+ map.setCenter(proj(center), zoom);
}
function getEventPosition(event) {
}
}
}
-
-function scaleToZoom(scale) {
- return Math.log(360.0/(scale * 512.0)) / Math.log(2.0);
-}
var bbox = new OpenLayers.Bounds(minlon, minlat, maxlon, maxlat);
var centre = bbox.getCenterLonLat();
- setMapExtent(bbox);
+ map.setExtent(proj(bbox));
addBoxToMap(bbox);
$("#loading").hide();
selectControl.activate();
<% if ! @bbox.nil? %>
- setMapExtent(new OpenLayers.Bounds(<%= @bbox %>));
+ map.setExtent(proj(new OpenLayers.Bounds(<%= @bbox %>)));
<% else %>
- setMapExtent(bounds);
+ map.setExtent(proj(bounds));
<% end %>
}
$("#sidebar_title").html("<%= t 'site.sidebar.search_results' %>");
<% if params[:action] == 'index' -%>
- var extent = getMapExtent();
+ var extent = unproj(map.getExtent());
$("#sidebar_content").load("<%= url_for :controller => :geocoder, :action => :search %>", {
query: $("#query").val(),
<% if bbox %>
var bbox = new OpenLayers.Bounds(<%= minlon %>, <%= minlat %>, <%= maxlon %>, <%= maxlat %>);
- setMapExtent(bbox);
+ map.setExtent(proj(bbox));
<% if box %>
$(window).load(function() { addBoxToMap(bbox) });
var centre = new OpenLayers.LonLat(<%= lon %>, <%= lat %>);
var zoom = <%= zoom %>;
- <% if params[:scale] and params[:scale].length > 0 then %>
- zoom = scaleToZoom(<%= params[:scale].to_f %>);
+ <% if params[:scale] and params[:scale].length > 0 and params[:scale].to_f > 0 then %>
+ zoom = <%= Math.log(360.0 / (params[:scale].to_f * 512.0)) / Math.log(2.0) %>;
<% end %>
setMapCenter(centre, zoom);
if (min_lon && min_lat && max_lon && max_lat) {
var bbox = new OpenLayers.Bounds(min_lon, min_lat, max_lon, max_lat);
- setMapExtent(bbox);
+ map.setExtent(proj(bbox));
} else {
setMapCenter(centre, zoom);
}
- if (marker)
+ if (marker) {
removeMarkerFromMap(marker);
+ }
marker = addMarkerToMap(centre, getArrowIcon());
}
function updateLocation() {
- var lonlat = getMapCenter();
+ var lonlat = unproj(map.getCenter());
var zoom = map.getZoom();
var layers = getMapLayers();
- var extents = getMapExtent();
+ var extents = unproj(map.getExtent());
var expiry = new Date();
var objtype;
var objid;
}
function remoteEditHandler(event) {
- var extent = getMapExtent();
+ var extent = unproj(map.getExtent());
var loaded = false;
$("#linkloader").load(function () { loaded = true; });
var centre = new OpenLayers.LonLat(<%= lon %>, <%= lat %>);
var zoom = <%= zoom %>;
- <% if params['scale'] and params['scale'].length > 0 then %>
- zoom = scaleToZoom(<%= params['scale'].to_f() %>);
+ <% if params[:scale] and params[:scale].length > 0 and params[:scale].to_f > 0 then %>
+ zoom = <%= Math.log(360.0 / (params[:scale].to_f * 512.0)) / Math.log(2.0) %>;
<% end %>
var map = createMap("map");