diff options
author | Matthew Somerville <matthew@mysociety.org> | 2011-08-09 12:22:00 +0100 |
---|---|---|
committer | Matthew Somerville <matthew@mysociety.org> | 2011-08-09 12:22:00 +0100 |
commit | 40ae7ac254d35ad94cc9b3d43308e3ccd2205b58 (patch) | |
tree | 1c843196b1a26b6f0f58b4b8b205afe86d33d74f /web | |
parent | de4dcf6c785dff4775dee837f1156f2e16e30b6b (diff) |
Allow dragging of new report marker.
Diffstat (limited to 'web')
-rw-r--r-- | web/js/map-OpenLayers.js | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/web/js/map-OpenLayers.js b/web/js/map-OpenLayers.js index d00079517..5b749fc44 100644 --- a/web/js/map-OpenLayers.js +++ b/web/js/map-OpenLayers.js @@ -98,6 +98,14 @@ function fixmystreet_onload() { var select = new OpenLayers.Control.SelectFeature( fixmystreet.markers ); fixmystreet.map.addControl( select ); select.activate(); + } else if (fixmystreet.page == 'new') { + var drag = new OpenLayers.Control.DragFeature( fixmystreet.markers, { + onComplete: function(feature, e) { + fixmystreet_update_pin( feature.geometry.clone() ); + } + } ); + fixmystreet.map.addControl( drag ); + drag.activate(); } fixmystreet.map.addLayer(fixmystreet.markers); @@ -281,12 +289,7 @@ OpenLayers.Control.Click = OpenLayers.Class(OpenLayers.Control, { if (fixmystreet.page == 'new') { fixmystreet.markers.features[0].move(lonlat); } - lonlat.transform( - fixmystreet.map.getProjectionObject(), - new OpenLayers.Projection("EPSG:4326") - ); - document.getElementById('fixmystreet.latitude').value = lonlat.lat; - document.getElementById('fixmystreet.longitude').value = lonlat.lon; + fixmystreet_update_pin(lonlat); if (fixmystreet.page == 'new') { return; } @@ -294,3 +297,13 @@ OpenLayers.Control.Click = OpenLayers.Class(OpenLayers.Control, { } }); +// This function might be passed either an OpenLayers.LonLat (so has +// lon and lat) or an OpenLayers.Geometry.Point (so has x and y) +function fixmystreet_update_pin(lonlat) { + lonlat.transform( + fixmystreet.map.getProjectionObject(), + new OpenLayers.Projection("EPSG:4326") + ); + document.getElementById('fixmystreet.latitude').value = lonlat.lat || lonlat.y; + document.getElementById('fixmystreet.longitude').value = lonlat.lon || lonlat.x; +} |