当前位置: 首页 > 工具软件 > PHP Geo > 使用案例 >

geohash php_php 实现搜索附近的人功能(laravel+geohash)

莫繁
2023-12-01

【实例简介】

【实例截图】

【核心代码】

$lat = '30.555';

$long = '104.07';

$geohash = new GeoHash();

$hash = $geohash->encode($lat, $long);

// 决定查询范围,值越大,获取的范围越小

// 当geohash base32编码长度为8时,精度在19米左右,而当编码长度为9时,精度在2米左右,编码长度需要根据数据情况进行选择。

$pre_hash = substr($hash, 0, 5);

//取出相邻八个区域

$neighbors = $geohash->neighbors($pre_hash);

array_push($neighbors, $pre_hash);

$values = '';

foreach ($neighbors as $key=>$val) {

$values .= '\'' . $val . '\'' .',';

}

$values = substr($values, 0, -1);

通过以上操作,会获取到:$values = "'wm6n0','wm6j8','wm6jc','wm3vz','wm3yp','wm6n1','wm6j9','wm3vx','wm6jb'";

拼接成这样的字符串主要是为了后面的数据库查询工作。

用sql查询操作:

SELECT * FROM `address` WHERE LEFT(`geohash`,5) IN ('wm6n0','wm6j8','wm6jc','wm3vz','wm3yp','wm6n1','wm6j9','wm3vx','wm6jb')

 类似资料: