在PHP中从纬度和经度对创建单个值
我正在一个PHP应用程序中进行谷歌地图项目。我需要找到一种方法将纬度和经度对存储为单数值。我用它来帮助存储具有相同坐标的标记 有没有办法将纬度/经度对编码为单个字符串?我想要一些像:在PHP中从纬度和经度对创建单个值,php,latitude-longitude,Php,Latitude Longitude,我正在一个PHP应用程序中进行谷歌地图项目。我需要找到一种方法将纬度和经度对存储为单数值。我用它来帮助存储具有相同坐标的标记 有没有办法将纬度/经度对编码为单个字符串?我想要一些像: $lat = 45.18392; $long = 62.18293; // Would return a single string like 893jfd8sj39k $single_string = make_single_string($lat, $long); function make_single_
$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;
}
函数最重要的部分是每次必须返回相同的字符串
谢谢你的帮助 你不能在返回时连接字符串吗?带着我的
返回$lat。"," . $长 你不能在返回时连接字符串吗?带着我的
返回$lat。"," . $长 为什么不直接把他们干掉
$string = $lat . "-" . $long;
我的意思是,如果你真的想,我想你可以接受上面的内容并在上面使用md5
:
$string = md5($lat . "-" . $long);
为什么不直接盯着他们
$string = $lat . "-" . $long;
我的意思是,如果你真的想,我想你可以接受上面的内容并在上面使用md5
:
$string = md5($lat . "-" . $long);
您不使用对象进行此操作有什么原因吗
$lat = 45.18392;
$long = 62.18293;
$pos = array(
'lat'=>$lat,
'long'=>$long
);
它更具可读性,并且作为一个额外的优点,您不必在以后解析它(也可以轻松地序列化)。有没有理由不使用对象
$lat = 45.18392;
$long = 62.18293;
$pos = array(
'lat'=>$lat,
'long'=>$long
);
它更具可读性,并且作为一个额外的优点,您不必在以后解析它(也可以轻松序列化)。我认为您正在寻找以下内容:
function make_single_string($lat, $long)
{
$single_string = md5( $lat.'-'.$long );
return $single_string;
}
结果将是这样的:
04f59f6c007149079d0b5cc81ee0d25f
我想你正在寻找这个:
function make_single_string($lat, $long)
{
$single_string = md5( $lat.'-'.$long );
return $single_string;
}
结果将是这样的:
04f59f6c007149079d0b5cc81ee0d25f
您可以返回两个数字的哈希:
function make_single_string($lat, $long)
{
return md5($lat.'-'.$long);
}
您可以返回两个数字的哈希:
function make_single_string($lat, $long)
{
return md5($lat.'-'.$long);
}
如果你想要可逆性(而且你可能想要),那么你需要拿出一个标准的输入格式。假设你的纬度在+/-90之间,经度在+/-180之间,你可以这样做:
$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;
}
+
符号前加上前缀+09.2
+09.200000
+
、-
和
转换为某种标准符号。比如说,P
代表+
,M
代表-
,d
代表
。对于9.2度的纬度,您将得到P09d200000
$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;
}
+
符号前加上前缀+09.2
+09.200000
+
、-
和
转换为某种标准符号。比如说,P
代表+
,M
代表-
,d
代表
。对于9.2度的纬度,您将得到P09d200000
然后得到一个可逆的字符串,其中只有字母数字字符。不过,您可能不需要这种花哨的东西。您所寻找的东西确实存在,并且不像
md5($lat.-'$long)那么简单代码>,因为要有效,必须在泛化过程之前完成
它叫。在PHP中有不同的实现,但谷歌提供了几种选择。你要找的东西确实存在,而且不像md5($lat.-'.$long)那么简单代码>,因为要有效,必须在泛化过程之前完成
它叫。在PHP中有不同的实现,但谷歌提供了几种选择。使用类或普通对象
课程
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;
如果需要将这些对象保存在数据库中,可以将对象序列化为字符串,然后在再次从数据库中提取对象时取消序列化
使用类或普通对象
课程
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;
如果需要将这些对象保存在数据库中,可以将对象序列化为字符串,然后在再次从数据库中提取对象时取消序列化
但这并不完全是可逆的。。。OP没有提到它必须是,但我们可以假设它应该是。从OP的“函数最重要的部分是每次都必须返回相同的字符串”中可以看出,不可逆不是问题。不过我不确定。+1谢谢……接受了@powtac,因为他快了1分钟。@Sardine实际上我快了1分钟,11分钟前比10分钟前,但没问题,我很高兴你得到了答案:)@Sardine你为什么要散列字符串?这比简单的串联要慢得多。但这并不完全是可逆的。。。OP没有提到它必须是,但我们可以假设它应该是。从OP的“函数最重要的部分是每次都必须返回相同的字符串”中可以看出,不可逆不是问题。不过我不确定。+1谢谢……接受了@powtac,因为他快了1分钟。@Sardine实际上我快了1分钟,11分钟前比10分钟前,但没问题,我很高兴你得到了答案:)@Sardine你为什么要散列字符串?这比以前慢多了