/* map edit */ /* availaible map layers */ var layerMapnik = new OpenLayers.Layer.OSM.Mapnik('Mapnik'); var layerMarkers = new OpenLayers.Layer.Markers('POIs'); /* default size and offset for icon */ var size = new OpenLayers.Size(21, 25); var offset = new OpenLayers.Pixel(-(size.w/2), -size.h); var icon = new OpenLayers.Icon('http://www.openlayers.org/dev/img/marker.png', size, offset); /* set a marker with a click on the map */ var setMarker = function (event){ event = event || window.event; lonlat = layerMarkers.getLonLatFromViewPortPx(event.xy); putMarker(lonlat); OpenLayers.Event.stop(event); } /* put the marker on the map and update latitude and longitude fields */ var putMarker = function (lonlat){ if (marker) { layerMarkers.removeMarker(marker); } var marker = new OpenLayers.Marker(lonlat.clone(), icon); layerMarkers.addMarker(marker); lonlat = lonlat.clone().transform(map.getProjectionObject(), epsg_display_projection); document.getElementById('id_point').value = 'POINT(' + lonlat.lon + ' ' + lonlat.lat + ')'; document.getElementById('live_latitude').value = lonlat.lon; document.getElementById('live_longitude').value = lonlat.lat; } /* main initialisation function */ function init(){ map = new OpenLayers.Map ('map_edit', { controls:[new OpenLayers.Control.Navigation(), new OpenLayers.Control.PanZoomBar(), new OpenLayers.Control.Attribution()], maxExtent: maxExtent, maxResolution: 156543.0399, units: 'm', projection: epsg_projection, displayProjection: epsg_display_projection, } ); layerMarkers.setOpacity(0.5); map.addLayers([layerMapnik, layerMarkers]); map.events.register('click', map, setMarker); map.setCenter(centerLonLat, 12); } /* code for drag'n drop : delayed for further version of openlayers */ /* function init_b(){ init(); marker.events.register('mouseup', marker, releaseMarker); marker.events.register('mousedown', marker, catchMarker); marker.events.register('mouseover', marker, markerOver); marker.events.register('mouseout', marker, markerOut); map.events.register('mousemove', map, onMouseMove); map.events.register('moveend', map, onMoveEnd); } var marker_catched = false; function catchMarker(event){ marker_catched = true; event = event || window.event; OpenLayers.Event.stop(event); } function releaseMarker(event){ event = event || window.event; if(marker_catched) { marker_catched = false; lonlat = layerMarkers.getLonLatFromViewPortPx(marker.icon.px); marker.lonlat = lonlat; document.getElementById('latitude').value = marker.lonlat.lat; document.getElementById('longitude').value = marker.lonlat.lon; } OpenLayers.Event.stop(event); } function onMouseMove(event) { event = event || window.event; if (!marker_catched) {return;} marker.icon.px = null; marker.icon.moveTo(new OpenLayers.Pixel(event.xy.x + delta_x, event.xy.y + delta_y + 20)); defLiveLatLon(); lonlat = layerMarkers.getLonLatFromViewPortPx(marker.icon.px).transform(epsg_projection, epsg_display_projection); live_longitude.value = lonlat.lon; live_latitude.value = lonlat.lat; OpenLayers.Event.stop(event); } function onMoveEnd(event) { event = event || window.event; marker.icon.px = map.getPixelFromLonLat(marker.lonlat); OpenLayers.Event.stop(event); } var markerOver = function (evt) { document.body.style.cursor='pointer'; OpenLayers.Event.stop(evt); }; var markerOut = function (evt) { document.body.style.cursor='auto'; OpenLayers.Event.stop(evt); }; */