百度地图坐标看起来跟GPS一样,但实际上根据国家原测绘地理信息局的要求,互联网地图在坐标位置上均做了偏移旋转,包括在国内开放的Google地图(Google地球与国际版的谷歌地图是WGS-84坐标,但是由于技术原因无法在国内访问)。本文来自广州地理信息:http://www.gzgis.com
如何把畸形的百度坐标转换为WGS-84坐标(即原生GPS坐标)呢?可以通过访问百度地图提供的一个方法转换,具体转换代码如下:
function BD09LLtoWGS84($lnglat){ // 经度,纬度 $lnglat = explode(',', $lnglat); list($x,$y) = $lnglat; $Baidu_Server = "http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x={$x}&y={$y}"; $result = @file_get_contents($Baidu_Server); $json = json_decode($result); if($json->error == 0){ $bx = base64_decode($json->x); $by = base64_decode($json->y); $GPS_x = 2 * $x - $bx; $GPS_y = 2 * $y - $by; return $GPS_x.','.$GPS_y;//经度,纬度 }else{ return $lnglat; } }
需传入百度坐标参数,$lnglat 坐标(如:114.326, 23.573404),返回GPS原生坐标。