diff options
Diffstat (limited to 'static/edit_map.js')
-rw-r--r-- | static/edit_map.js | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/static/edit_map.js b/static/edit_map.js new file mode 100644 index 0000000..5a9c997 --- /dev/null +++ b/static/edit_map.js @@ -0,0 +1,117 @@ +/* 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); +}; +*/ |