Index: moodle/mod/data/field/latlong/field.class.php
===================================================================
--- moodle/mod/data/field/latlong/field.class.php	(revision )
+++ moodle/mod/data/field/latlong/field.class.php	(revision )
@@ -54,7 +54,10 @@
                 $long = $content->content1;
             }
         }
-        $str = '<div title="'.s($this->field->description).'">';
+        $str = '<script src="http://code.google.com/apis/gears/gears_init.js" type="text/javascript" charset="utf-8"></script>';
+        $str .= '<script src="field/latlong/js/geo.js?id=1" type="text/javascript" charset="utf-8"></script>';
+
+        $str .= '<div title="'.s($this->field->description).'">';
         $str .= '<fieldset><legend><span class="accesshide">'.$this->field->name.'</span></legend>';
         $str .= '<table><tr><td align="right">';
         $str .= '<label for="field_'.$this->field->id.'_0">' . get_string('latitude', 'data') . '</label></td><td><input type="text" name="field_'.$this->field->id.'_0" id="field_'.$this->field->id.'_0" value="'.s($lat).'" size="10" />°N</td></tr>';
@@ -62,6 +65,27 @@
         $str .= '</table>';
         $str .= '</fieldset>';
         $str .= '</div>';
+        $str .= '<script>
+       		if(geo_position_js.init()){
+       			geo_position_js.getCurrentPosition(success_callback,error_callback,{enableHighAccuracy:true});
+       		}
+       		else{
+       			//alert("Functionality not available");
+       		}
+
+       		function success_callback(p)
+       		{
+       			//alert(\'lat=\'+p.coords.latitude.toFixed(2)+\';lon=\'+p.coords.longitude.toFixed(2));
+       			document.getElementById("field_'.$this->field->id.'_0").value = p.coords.latitude.toFixed(2);
+       			document.getElementById("field_'.$this->field->id.'_1").value = p.coords.longitude.toFixed(2);
+       		}
+
+       		function error_callback(p)
+       		{
+       			//alert(\'error=\'+p.code);
+       		}
+       	</script>';
+
         return $str;
     }
 
