{"id":256,"title":"\u5730\u56fe\u4e0a\u8ba1\u7b97\u4e24\u70b9\u95f4\u7684\u8ddd\u79bb","good":0,"bad":0,"hit":2542,"created_at":"2017-02-20 15:55:43","content":"
\u5355\u4f4d\uff1a\u5343\u7c73\uff0c\u4f20\u7684\u5206\u522b\u4e3a\u4e24\u4e2a\u70b9\u7684\u7ecf\u7eac\u5ea6,\u7528\u767e\u5ea6\u7684\u5750\u6807\uff0c\u7ecf\u6d4b\u8bd5\u4e0d\u51c6\uff0c\u8c8c\u4f3c\u5e94\u8be5\u8f6cgps\u5750\u6807\u624d\u662f\u5bf9\u7684
<\/p>
\/\/\u83b7\u53d62\u70b9\u4e4b\u95f4\u7684\u8ddd\u79bb
public function GetDistance($lat1, $lng1, $lat2, $lng2){
define('PI',3.1415926535898);
define('EARTH_RADIUS',6378.137);
$radLat1 = $lat1 * (PI \/ 180);
$radLat2 = $lat2 * (PI \/ 180);
$a = $radLat1 - $radLat2;
$b = ($lng1 * (PI \/ 180)) - ($lng2 * (PI \/ 180));
$s = 2 * asin(sqrt(pow(sin($a\/2),2) + cos($radLat1)*cos($radLat2)*pow(sin($b\/2),2)));
$s = $s * EARTH_RADIUS;
$s = round($s * 10000) \/ 10000;
return $s;
}<\/p>
<\/p>
\u4e0b\u9762\u8fd9\u4e2a\u6d4b\u8bd5\u662f\u51c6\u7684\uff0c\u8981\u8f6cgps\u5750\u6807<\/p>
<\/p>
\/**
* \u8ba1\u7b97\u4e24\u4e2a\u5750\u6807\u4e4b\u95f4\u7684\u8ddd\u79bb(\u5343\u7c73,\u4e24\u4f4d\u5c0f\u6570)
* @param float $fP1Lat \u8d77\u70b9(\u7eac\u5ea6)
* @param float $fP1Lon \u8d77\u70b9(\u7ecf\u5ea6)
* @param float $fP2Lat \u7ec8\u70b9(\u7eac\u5ea6)
* @param float $fP2Lon \u7ec8\u70b9(\u7ecf\u5ea6)
* @return int
*\/
function distanceBetween($fP1Lat, $fP1Lon, $fP2Lat, $fP2Lon){
$fEARTH_RADIUS = 6378137;
\/\/\u89d2\u5ea6\u6362\u7b97\u6210\u5f27\u5ea6
$fRadLon1 = deg2rad($fP1Lon);
$fRadLon2 = deg2rad($fP2Lon);
$fRadLat1 = deg2rad($fP1Lat);
$fRadLat2 = deg2rad($fP2Lat);
\/\/\u8ba1\u7b97\u7ecf\u7eac\u5ea6\u7684\u5dee\u503c
$fD1 = abs($fRadLat1 - $fRadLat2);
$fD2 = abs($fRadLon1 - $fRadLon2);
\/\/\u8ddd\u79bb\u8ba1\u7b97
$fP = pow(sin($fD1\/2), 2) +
cos($fRadLat1) * cos($fRadLat2) * pow(sin($fD2\/2), 2);
return round(intval($fEARTH_RADIUS * 2 * asin(sqrt($fP)) + 0.5)\/1000,2);
}
\/**
* \u767e\u5ea6\u5750\u6807\u7cfb\u8f6c\u6362\u6210\u6807\u51c6GPS\u5750\u7cfb
* @param float $lnglat \u5750\u6807(\u5982:106.426, 29.553404)
* @return string \u8f6c\u6362\u540e\u7684\u6807\u51c6GPS\u503c:
*\/
function BD09LLtoWGS84($x, $y){ \/\/ \u7ecf\u5ea6,\u7eac\u5ea6
$arr['x']=$x;
$arr['y']=$y;
$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;
$arr['x']=$GPS_x;
$arr['y']=$GPS_y;
}
return $arr;
}<\/p>"}