在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_

我正在一个PHP应用程序中进行谷歌地图项目。我需要找到一种方法将纬度和经度对存储为单数值。我用它来帮助存储具有相同坐标的标记

有没有办法将纬度/经度对编码为单个字符串?我想要一些像:

$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;
}
  • 确保纬度和经度有标记。如果为正,则在
    +
    符号前加上前缀
  • 正面的零位垫为两位数(纬度)和三位数(经度)。9.2度的纬度将变成
    +09.2
  • 在末尾加零,直到你想要多少个有效数字(比如说,六个)。9.2度的纬度将变成
    +09.200000
  • +
    -
    转换为某种标准符号。比如说,
    P
    代表
    +
    M
    代表
    -
    d
    代表
    。对于9.2度的纬度,您将得到
    P09d200000
  • 连接纬度和经度
  • 然后得到一个可逆的字符串,其中只有字母数字字符。不过,您可能不需要这种花哨的东西。

    如果您想要可逆性(您可能需要),那么您需要提出一种标准的输入格式。假设你的纬度在+/-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;
    }
    
  • 确保纬度和经度有标记。如果为正,则在
    +
    符号前加上前缀
  • 正面的零位垫为两位数(纬度)和三位数(经度)。9.2度的纬度将变成
    +09.2
  • 在末尾加零,直到你想要多少个有效数字(比如说,六个)。9.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你为什么要散列字符串?这比以前慢多了