现在位置:首页 » 技术 »

计算某个经纬度的周围某段距离的正方形的四个点

作者: ⁄ 时间:2018年03月21日 ⁄ 分类: 技术 评论:0
<?php

    /**
     * 计算某个经纬度的周围某段距离的正方形的四个点
     * @param $lng float 经度
     * @param $lat float 纬度
     * @param float $distance 该点所在圆的半径,该圆与此正方形内切,默认值为0.5千米
     * @return array 正方形的四个点的经纬度坐标
     */
    function returnSquarePoint($lng, $lat, $distance = 0.5)
    {
        //地球半径,平均半径为6371km
        $dlng = 2 * asin(sin($distance / (2 * 6371)) / cos(deg2rad($lat)));
        $dlng = rad2deg($dlng);

        $dlat = $distance / 6371;
        $dlat = rad2deg($dlat);

        return array(
            'leftTop' => array('lat' => $lat + $dlat, 'lng' => $lng - $dlng),
            'rightTop' => array('lat' => $lat + $dlat, 'lng' => $lng + $dlng),
            'leftBottom' => array('lat' => $lat - $dlat, 'lng' => $lng - $dlng),
            'rightBottom' => array('lat' => $lat - $dlat, 'lng' => $lng + $dlng)
        );
    }


    $lng = '121.519869';
    $lat = '29.758247';

    $sqr = returnSquarePoint($lng,$lat);
    echo '<pre>';
    print_r($sqr);



目前有 0 条评论