/** * Called whenever a <geo> needs to be parsed * * Return markup, but also a pointer to Map sources */ function parseGeo($text, $params, &$parser) { global $wgUser; $geo = new GeoParam($text); if (($e = $geo->get_error()) != "") { return "(" . $e . ")"; } # support Internet Geo headers http://geotags.com/geo/geotags2.html global $wgOut; $wgOut->addMeta("geo.position", $geo->latdeg . ";" . $geo->londeg); if (!isset($geo->title) || $geo->title == "") { $geo->title = $parser->getTitle()->getDBkey(); } $geo->title = str_replace(' ', '_', $geo->title); if ($geo->title != "" && $geo->title != " ") { $wgOut->addMeta("geo.placename", $geo->title); } $attr = $geo->get_attr(); if (isset($attr['region']) && ($r = $attr['region'])) { $wgOut->addMeta("geo.region", $r); } $skin = $wgUser->getSkin(); // !JF1 Replace Special: by NS call. return Linker::link(SpecialPage::getTitleFor('Geo'), $geo->get_markup(), $geo->get_param_array()); }
/** * Given decimal degrees latitude and longitude, convert to * string */ function make_position($lat, $lon) { $latdms = GeoParam::make_minsec($lat); $londms = GeoParam::make_minsec($lon); $outlat = intval(abs($latdms['deg'])) . "° "; $outlon = intval(abs($londms['deg'])) . "° "; if ($latdms['min'] != 0 or $londms['min'] != 0 or $latdms['sec'] != 0 or $londms['sec'] != 0) { $outlat .= intval($latdms['min']) . "′ "; $outlon .= intval($londms['min']) . "′ "; if ($latdms['sec'] != 0 or $londms['sec'] != 0) { $outlat .= $latdms['sec'] . "″ "; $outlon .= $londms['sec'] . "″ "; } } return $outlat . $latdms['NS'] . " " . $outlon . $londms['EW']; }