我正在PHP应用程序中处理Google Maps项目。我需要找到一种方法来存储纬度和经度对作为奇异值。我正在使用它来帮助存储具有相同坐标的标记。
我可以将纬度/经度对编码成单个字符串吗?我想要像:
$lat = 45.18392;
$long = 62.18293;
// Would return a single string like 893jfd8sj39k
$single_string = make_single_string($lat, $long);
function make_single_string($lat, $long)
{
// Do something here with $lat and $long
return $single_string;
}
该函数最重要的部分是它必须每次返回相同的字符串。
感谢您的帮助!
答案 0 :(得分:3)
我认为你正在寻找这个:
function make_single_string($lat, $long)
{
$single_string = md5( $lat.'-'.$long );
return $single_string;
}
结果将是这样的:
04f59f6c007149079d0b5cc81ee0d25f
答案 1 :(得分:2)
您可以返回两个数字的哈希值:
function make_single_string($lat, $long)
{
return md5($lat.'-'.$long);
}
答案 2 :(得分:1)
你不能在返回时连接字符串吗?用。的...
返回$ lat。 “,”。 $长;
答案 3 :(得分:1)
您是否有理由不使用对象?
$lat = 45.18392;
$long = 62.18293;
$pos = array(
'lat'=>$lat,
'long'=>$long
);
它更具可读性,作为奖励你不必在以后解析它(也可以很容易地序列化)。
答案 4 :(得分:1)
如果你想要可逆性(你可能会这样做),那么你需要提出一种标准的输入格式。假设您的纬度可以在+/- 90之间,而经度在+/- 180之间,您可以执行以下操作:
+
符号。+09.2
。+09.200000
。+
,-
和.
转换为某种标准表示法。对P
+
,M
为-
,d
为.
。对于9.2度纬度,您将获得P09d200000
。然后你得到一个可逆的字符串,其中只包含字母数字字符。不过,你可能不需要这样的东西。
答案 5 :(得分:0)
为什么不把它们连接起来?
$string = $lat . "-" . $long;
我的意思是,如果你真的想要,我认为你可以采取上述措施并使用md5
:
$string = md5($lat . "-" . $long);
答案 6 :(得分:0)
你所寻找的东西确实存在,并不像md5( $lat.'-'.$long );
那么简单,因为必须在推广过程之前有效。
它被称为Geohash。在PHP中有不同的实现。 This is good,但Google提供了多种选择。
答案 7 :(得分:0)
使用类或普通对象。
<强>类强>
class Coord {
public $lat;
public $long;
__construct($lat, $long) {
$this->lat = $lat;
$this->long = $long;
}
}
$coord = new Coord(45.18392, 62.18293);
echo $coord->lat;
echo $coord->long;
普通对象
$coords = new stdClass();
$coords->lat = 45.18392;
$coords->long = 62.18293;
echo $coord->lat;
echo $coord->long;
如果需要将这些对象保存在数据库中,可以将对象序列化为字符串,然后在从数据库中再次提取时将其反序列化。