aboutsummaryrefslogtreecommitdiffstats
path: root/web
diff options
context:
space:
mode:
authorMatthew Somerville <matthew@mysociety.org>2011-08-09 12:22:00 +0100
committerMatthew Somerville <matthew@mysociety.org>2011-08-09 12:22:00 +0100
commit40ae7ac254d35ad94cc9b3d43308e3ccd2205b58 (patch)
tree1c843196b1a26b6f0f58b4b8b205afe86d33d74f /web
parentde4dcf6c785dff4775dee837f1156f2e16e30b6b (diff)
Allow dragging of new report marker.
Diffstat (limited to 'web')
-rw-r--r--web/js/map-OpenLayers.js25
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;
+}