这里是用的北京54坐标6度分带。需要用其他坐标可以修改参数$_a, $_f 。
经纬度转XY:
<?php
function BLtoXY($latitude, $longitude)
{
$_a = 6378245.0;
$_f = 1.0 / 298.3;
$zoneWide = 6;
$PI = 3.14159265353846;
$iPI = 0.0174532925199433; //3.1415926535898/180.0;
//ZoneWide = 6; //6度带宽
$ProjNo = floor($longitude / $zoneWide);
$longitude0 = $ProjNo * $zoneWide + $zoneWide / 2;
$longitude0 = $longitude0 * $iPI;
$latitude0 = 0;
$longitude1 = $longitude * $iPI; //经度转换为弧度
$latitude1 = $latitude * $iPI; //纬度转换为弧度
$e2 = 2 * $_f - $_f * $_f;
$ee = $e2 * (1.0 - $e2);
$NN = $_a / sqrt(1.0 - $e2 * sin($latitude1) * sin($latitude1));
$T = tan($latitude1) * tan($latitude1);
$C = $ee * cos($latitude1) * cos($latitude1);
$A = ($longitude1 - $longitude0) * cos($