PHP之路——geohash查找附近的人

<?php
	
class location
{
	public function getLat($number, $small, $big,  $temp = 20){
		$temp--;
		$average = ($big + $small) / 2;
		if ($temp == 0) {
			if ($average <= $number) {
				return '1';
			} else {
				return '0';
			}
		}
		if ($average <= $number) {
			return '1' . $this->getLat($number, $average, $big, $temp);
		} else {
			return '0' . $this->getLat($number, $small, $average, $temp);
		}
	}

	public function joinStr($lat, $lon){
		$len = strlen($lat);
		$str = '';
		for ($i=0; $i < $len; $i++) { 
			$str .= $lon[$i] . $lat[$i];
		}
		return $str;
	}
}

$location = new location();
$lat = $location->getLat(39.92324, -90, 90);
$lon = $location->getLat(116.3906, -180, 180);
$str =  $location->joinStr($lat, $lon);
for ($i=0; $i <strlen($str) / 5 ; $i++) { 
	$code[$i] = bindec(substr($str, $i * 5, 5));
}
foreach ($code as $key => $value) {
	echo $value . "\n";
}

  

posted @ 2017-06-07 11:43  偏执Dog  阅读(1305)  评论(0编辑  收藏  举报