PHP坐标系转换

PHP坐标系转换

1.坐标系
WGS84:地球坐标系,国际上通用的坐标系。设备一般包含GPS芯片或者北斗芯片获取的经纬度为WGS84地理坐标系,最基础的坐标,谷歌地图在非中国地区使用的坐标系。使用地图:GPS/谷歌地图卫星。
GCJ02:火星坐标系,是由中国国家测绘局制订的地理信息系统的坐标系统。并要求在中国使用的地图产品使用的都必须是加密后的坐标,而这套WGS84加密后的坐标就是gcj02。使用地图:腾讯(搜搜)地图,阿里云地图,高德地图,谷歌国内地图。
BD09: 百度坐标系,百度在GCJ02的基础上进行了二次加密,官方解释是为了进一步保护用户隐私。使用地图:百度地图。
2.坐标转换

/*
     * GCJ-02(火星,高德)坐标转换成BD-09(百度)坐标
     * @param lon 百度经度
     * @param lat 百度纬度
     */
    function toBD($lon,$lat){
        $x_pi = 3.14159265358979324 * 3000.0 / 180.0;
        $x = $lon;
        $y = $lat;
        $z = sqrt($x * $x + $y * $y) - 0.00002 * sin($y * $x_pi);
        $theta = atan2($y, $x) - 0.000003 * cos($x * $x_pi);
        $lon = $z * cos($theta) + 0.0065;
        $lat = $z * sin($theta) + 0.006;
        // 保留小数点后六位
        $data['lon'] = round($lon, 6);
        $data['lat'] = round($lat, 6);
        return $data;
    }
    /*
     *BD-09(百度)坐标转换成GCJ-02(火星,高德)坐标
     *@param lon 百度经度
     *@param lat 百度纬度
     */
    function toCCJ($lon,$lat){
        $x_pi = 3.14159265358979324 * 3000.0 / 180.0;
        $x = $lon - 0.0065;
        $y = $lat - 0.006;
        $z = sqrt($x * $x + $y * $y) - 0.00002 * sin($y * $x_pi);
        $theta = atan2($y, $x) - 0.000003 * cos($x * $x_pi);
        // $data['gg_lon'] = $z * cos($theta);
        // $data['gg_lat'] = $z * sin($theta);
        $lon = $z * cos($theta);
        $lat = $z * sin($theta);
        // 保留小数点后六位
        $data['gg_lon'] = round($lon, 6);
        $data['gg_lat'] = round($lat, 6);
        return $data;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值