您当前的位置: 首页 >  sql

漏刻有时

暂无认证

  • 0浏览

    0关注

    717博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

php实现mysql计算经纬度坐标距离的筛选附近范围POI的解决方案

漏刻有时 发布时间:2020-11-14 20:17:00 ,浏览量:0

经测试,按照该公式和腾讯地图经纬度距离计算,精度基本上是匹配的,返回的单位为:km。 地球半径采用的是6378.137千米。

	//选取小余800km的经纬度;
	public function getNear()
	{
		global $db, $res;
		dbc();
		$city_lat = "29.800712";
		$city_lng = "121.556758";
		$sql = "select toilet_id,toilet_name,toilet_address,toilet_url,toilet_lon,toilet_lat,ROUND((6378.137 * acos (cos (radians($city_lat) )* cos(radians( toilet_lat ) )* cos(radians( toilet_lon ) - radians($city_lng) )+ sin (radians($city_lat) )* sin(radians( toilet_lat ))))) AS distance from " . $db->table('toilet') . " HAVING distance < 800 ORDER BY distance ASC";
		$row         = $db->queryall($sql);
		$res["data"] = $row;
		die(json_encode_lockdata($res));
	}
{
    "err": "",
    "res": "",
    "data": [
        {
            "toilet_id": "5",
            "toilet_name": "单县东大医院",
            "toilet_address": "山东省菏泽市单县舜师东路1号",
            "toilet_url": "upload/preview/2020-11/3e29ff1cb9f04edc889f19962e05cf57.jpg",
            "toilet_lon": "116.109825",
            "toilet_lat": "34.775480",
            "distance": "754"
        },
        {
            "toilet_id": "1",
            "toilet_name": "舜师路中段公厕",
            "toilet_address": "山东省菏泽市单县舜师路",
            "toilet_url": "upload/nopic.jpg",
            "toilet_lon": "116.090331",
            "toilet_lat": "34.778643",
            "distance": "756"
        },
        {
            "toilet_id": "4",
            "toilet_name": "文化路公厕",
            "toilet_address": "单县舜师路与文化路交叉口西南方向20米",
            "toilet_url": "upload/preview/2020-11/627365751e1c62eb98d8f4ae472efc81.jpg",
            "toilet_lon": "116.087551",
            "toilet_lat": "34.780302",
            "distance": "756"
        }
    ]
}

Done !

关注
打赏
1661217259
查看更多评论
立即登录/注册

微信扫码登录

0.3404s