在PHP中从纬度和经度对创建单个值

时间:2011-08-29 19:09:44

标签: php latitude-longitude

我正在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;
}

该函数最重要的部分是它必须每次返回相同的字符串。

感谢您的帮助!

8 个答案:

答案 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之间,您可以执行以下操作:

  1. 确保纬度和经度有迹象。如果是肯定的,请添加+符号。
  2. 前面的零位填充到两位数(纬度)和三位数(经度)。 9.2度的纬度将变为+09.2
  3. 最后使用零填充,但需要多个有效数字(例如,六个)。然后,9.2度的纬度将变为+09.200000
  4. +-.转换为某种标准表示法。对P +M-d.。对于9.2度纬度,您将获得P09d200000
  5. 连接纬度和经度。
  6. 然后你得到一个可逆的字符串,其中只包含字母数字字符。不过,你可能不需要这样的东西。

答案 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;

如果需要将这些对象保存在数据库中,可以将对象序列化为字符串,然后在从数据库中再次提取时将其反序列化。

http://php.net/manual/en/function.serialize.php

相关问题