"http://maps.google.com/maps?q=@lat@,+@long@&iwloc=A&hl=en", "Google Earth" => "@wwwroot@/mod/data/field/latlong/kml.php?d=@dataid@&fieldid=@fieldid@&rid=@recordid@", "Geabios" => "http://www.geabios.com/html/services/maps/PublicMap.htm?lat=@lat@&lon=@long@&fov=0.3&title=Moodle%20data%20item", "OpenStreetMap" => "http://www.openstreetmap.org/index.html?lat=@lat@&lon=@long@&zoom=11", "Multimap" => "http://www.multimap.com/map/browse.cgi?scale=200000&lon=@long@&lat=@lat@&icon=x" ); // Other map sources listed at http://kvaleberg.com/extensions/mapsources/index.php?params=51_30.4167_N_0_7.65_W_region:earth // Parameter data used: // "param1" is a comma-separated list of the linkout service names that are enabled for this instance // "param2" indicates the label that will be used in generating Google Earth KML files: -1 for item #, -2 for lat/long, positive number for the (text) field to use. function data_field_latlong($field=0, $data=0) { parent::data_field_base($field, $data); } function display_add_field($recordid=0){ global $CFG; $lat = ''; $long = ''; if ($recordid){ if ($content = get_record('data_content', 'fieldid', $this->field->id, 'recordid', $recordid)) { $lat = $content->content; $long = $content->content1; } } $str = '
'; $str .= '
'.$this->field->name.''; $str .= ''; $str .= ''; $str .= '
'; $str .= '°N
°E
'; $str .= '
'; $str .= '
'; return $str; } function display_browse_field($recordid, $template) { global $CFG; if ($content = get_record('data_content', 'fieldid', $this->field->id, 'recordid', $recordid)){ $lat = empty($content->content)? '':$content->content; $long = empty($content->content1)? '':$content->content1; if (empty($lat) or empty($long)) { return ''; } if($lat < 0) { $compasslat = "" . sprintf('%01.4f', 0 - $lat) . '°S'; } else { $compasslat = "" . sprintf('%01.4f', $lat) . "°N"; } if($long < 0) { $compasslong = "" . sprintf('%01.4f', 0 - $long) . '°W'; } else { $compasslong = "" . sprintf('%01.4f', $long) . "°E"; } $str = '
'; $str.= "$compasslat, $compasslong"; // Now let's create the jump-to-services link $servicesshown = explode(',', $this->field->param1); // These are the different things that can be magically inserted into URL schemes $urlreplacements = array( '@lat@'=> $lat, '@long@'=> $long, '@wwwroot@'=> $CFG->wwwroot, '@contentid@'=> $content->id, '@dataid@'=> $this->data->id, '@courseid@'=> $this->data->course, '@fieldid@'=> $content->fieldid, '@recordid@'=> $content->recordid, ); if(sizeof($servicesshown)==1 && $servicesshown[0]) { $str .= " $servicesshown[0] "; } elseif (sizeof($servicesshown)>1) { $str .= "\n"; } $str.= '
'; return $str; } return false; } function update_content($recordid, $value, $name='') { $content = new object; $content->fieldid = $this->field->id; $content->recordid = $recordid; $names = explode('_', $name); switch ($names[2]){ case 0: // update lat $content->content = (float)$value; break; case 1: // update long $content->content1 = (float)$value; break; default: break; } if ($oldcontent = get_record('data_content','fieldid', $this->field->id, 'recordid', $recordid)) { $content->id = $oldcontent->id; return update_record('data_content', $content); } else { return insert_record('data_content', $content); } } function get_sort_sql($fieldname) { global $CFG; switch ($CFG->dbtype) { case 'mysql': // string in an arithmetic operation is converted to a floating-point number return '('.$fieldname.'+0.0)'; default: return 'CAST('.$fieldname.' AS REAL)'; } } } ?>