- markers = new OpenLayers.Layer.Markers("markers");
- map.addLayer(markers);
-
- marker = new OpenLayers.Marker(new OpenLayers.LonLat(mlon,mlat));
- markers.addMarker(marker);
- <%end%>
-
- map.addControl(new OpenLayers.Control.LayerSwitcher());
- map.setCenter(new OpenLayers.LonLat(lon, lat), zoom);
-
- map.events.register("moveend", map, function() {
- var lonlat = map.getCenter();
-
- var lon_deg = (lonlat.lon / 20037508.34) * 180;
- var lat_deg = (lonlat.lat / 20037508.34) * 180;
- var PI = 3.14159265358979323846;
- lat_deg = 180/PI * (2 * Math.atan(Math.exp(lat_deg * PI / 180)) - PI / 2);
- var zoom = map.getZoom();
- updatelinks(lon_deg,lat_deg,zoom);
- });
- document.getElementById( 'map_OpenLayers_ViewPort' ).style.position = 'absolute';
- if( ie6 ) {
- handleResize();
- }
- }
-
- function getStyle( el, property ) {
- var style;
- if( el.currentStyle ) {
- style = el.currentStyle[property];
- } else if( window.getComputedStyle ) {
- style = document.defaultView.getComputedStyle(el,null).getPropertyValue(property);
- } else {
- style = el.style[property];
- }
- return style;
+ marker = addMarkerToMap(lonLatToMercator(new OpenLayers.LonLat(<%= mlon %>, <%= mlat %>)));
+ <% end %>
+
+ map.events.register("zoomend", map, updateKey);
+
+ map.events.register("moveend", map, updateLocation);
+ map.events.register("changelayer", map, updateLocation);
+ updateLocation();
+
+ handleResize();
+ }
+
+ function getPosition() {
+ return mercatorToLonLat(map.getCenter());
+ }
+
+ function setPosition(lat, lon, zoom) {
+ var centre = lonLatToMercator(new OpenLayers.LonLat(lon, lat));
+
+ map.setCenter(centre, zoom);
+
+ if (marker)
+ removeMarkerFromMap(marker);
+
+ marker = addMarkerToMap(centre, getArrowIcon());
+ }
+
+ function updateLocation() {
+ var lonlat = mercatorToLonLat(map.getCenter());
+ var zoom = map.getZoom();
+ var layers = getMapLayers();
+
+ updatelinks(lonlat.lon, lonlat.lat, zoom, layers);
+
+ document.cookie = "location=" + lonlat.lon + "," + lonlat.lat + "," + zoom + "," + layers;
+ }
+
+ function resizeContent() {
+ var content = $("content");
+ var rightMargin = parseInt(getStyle(content, "right"));
+ var bottomMargin = parseInt(getStyle(content, "bottom"));
+
+ content.style.width = document.documentElement.clientWidth - content.offsetLeft - rightMargin;
+ content.style.height = document.documentElement.clientHeight - content.offsetTop - bottomMargin;