【发布时间】:2010-03-30 21:37:39
【问题描述】:
如何用 PHP 从格式 52.593800、21.448850 格式 +52° 35' 37.68"、+21° 26' 55.86" 像谷歌http://maps.google.pl/maps?hl=pl&t=m&q=52.593800,21.448850 那样制作?
【问题讨论】:
如何用 PHP 从格式 52.593800、21.448850 格式 +52° 35' 37.68"、+21° 26' 55.86" 像谷歌http://maps.google.pl/maps?hl=pl&t=m&q=52.593800,21.448850 那样制作?
【问题讨论】:
直接来自Wikipedia:
给定一个十进制纵坐标,例如 -87.728055,将其转换为 DMS 形式很简单。有必要知道它是纬度坐标还是经度坐标才能完全转换它。方法如下:
0°0'0" 纬度或经度的坐标既不是北也不是南,也不是东也不是西。它只是零纬度或零经度。
最终结果是:W 87°43'41"。
【讨论】:
<?php
function DMStoDEC($deg,$min,$sec)
{
// Converts DMS ( Degrees / minutes / seconds )
// to decimal format longitude / latitude
return $deg+((($min*60)+($sec))/3600);
}
function DECtoDMS($dec)
{
// Converts decimal longitude / latitude to DMS
// ( Degrees / minutes / seconds )
// This is the piece of code which may appear to
// be inefficient, but to avoid issues with floating
// point math we extract the integer part and the float
// part by using a string function.
$vars = explode(".",$dec);
$deg = $vars[0];
$tempma = "0.".$vars[1];
$tempma = $tempma * 3600;
$min = floor($tempma / 60);
$sec = $tempma - ($min*60);
return array("deg"=>$deg,"min"=>$min,"sec"=>$sec);
}
将数组更改为所需的字符串应该很简单。
【讨论】: