示例#1
0
文件: geo.php 项目: Tjorriemorrie/app
/**
 *  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());
}
示例#2
0
 /**
  *   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'])) . "°&#160;";
     $outlon = intval(abs($londms['deg'])) . "°&#160;";
     if ($latdms['min'] != 0 or $londms['min'] != 0 or $latdms['sec'] != 0 or $londms['sec'] != 0) {
         $outlat .= intval($latdms['min']) . "′&#160;";
         $outlon .= intval($londms['min']) . "′&#160;";
         if ($latdms['sec'] != 0 or $londms['sec'] != 0) {
             $outlat .= $latdms['sec'] . "″&#160;";
             $outlon .= $londms['sec'] . "″&#160;";
         }
     }
     return $outlat . $latdms['NS'] . " " . $outlon . $londms['EW'];
 }