騰訊地圖和百度地圖的相互轉換
阿新 • • 發佈:2019-01-26
關於百度和騰訊地圖座標轉換的問題,網上大多給的是JS實現的,而JS又是非同步實現的,無法返回值,在有些應用場景下不好使用,這裡我從騰訊論壇上找到了一個PHP轉換的方法,貼出來分享給大家。經測試十分有效!
/** * 中國正常GCJ02座標---->百度地圖BD09座標 * 騰訊地圖用的也是GCJ02座標 * @param double $lat 緯度 * @param double $lng 經度 */ function Convert_GCJ02_To_BD09($lat,$lng){ $x_pi = 3.14159265358979324 * 3000.0 / 180.0; $x = $lng; $y = $lat; $z =sqrt($x * $x + $y * $y) + 0.00002 * sin($y * $x_pi); $theta = atan2($y, $x) + 0.000003 * cos($x * $x_pi); $lng = $z * cos($theta) + 0.0065; $lat = $z * sin($theta) + 0.006; return array('lng'=>$lng,'lat'=>$lat); } /** * 百度地圖BD09座標---->中國正常GCJ02座標 * 騰訊地圖用的也是GCJ02座標 * @param double $lat 緯度 * @param double $lng 經度 * @return array(); */ function Convert_BD09_To_GCJ02($lat,$lng){ $x_pi = 3.14159265358979324 * 3000.0 / 180.0; $x = $lng - 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); $lng = $z * cos($theta); $lat = $z * sin($theta); return array('lng'=>$lng,'lat'=>$lat); }