Heim  >  Artikel  >  Backend-Entwicklung  >  Beispiel für die gemeinsame Nutzung der Entfernungsberechnung in der PHP-Baidu-Kartenentwicklung

Beispiel für die gemeinsame Nutzung der Entfernungsberechnung in der PHP-Baidu-Kartenentwicklung

*文
*文Original
2017-12-25 11:29:151927Durchsuche

Die Baidu-Kartenschnittstelle wird in vielen Projektentwicklungen verwendet, daher ist die Berechnung des Abstands zwischen zwei Koordinaten auch eine typische Anwendung, die für die Baidu-Kartenschnittstelle entwickelt wird. In diesem Artikel wird ein Beispiel für die Entfernungsberechnung bei der Entwicklung einer Baidu-Karte vorgestellt, um allen zu helfen, sich mit der Entwicklung der Baidu-Karte vertraut zu machen.

Die spezifische Implementierungsmethode ist wie folgt:

/**
 * 计算两个坐标之间的距离(米)
 * @param float $fP1Lat 起点(纬度)
 * @param float $fP1Lon 起点(经度)
 * @param float $fP2Lat 终点(纬度)
 * @param float $fP2Lon 终点(经度)
 * @return int
 */
function distanceBetween($fP1Lat, $fP1Lon, $fP2Lat, $fP2Lon){
    $fEARTH_RADIUS = 6378137;
    //角度换算成弧度
    $fRadLon1 = deg2rad($fP1Lon);
    $fRadLon2 = deg2rad($fP2Lon);
    $fRadLat1 = deg2rad($fP1Lat);
    $fRadLat2 = deg2rad($fP2Lat);
    //计算经纬度的差值
    $fD1 = abs($fRadLat1 - $fRadLat2);
    $fD2 = abs($fRadLon1 - $fRadLon2);
    //距离计算
    $fP = pow(sin($fD1/2), 2) +
          cos($fRadLat1) * cos($fRadLat2) * pow(sin($fD2/2), 2);
    return intval($fEARTH_RADIUS * 2 * asin(sqrt($fP)) + 0.5);
}
/**
 * 百度坐标系转换成标准GPS坐系
 * @param float $lnglat 坐标(如:106.426, 29.553404)
 * @return string 转换后的标准GPS值:
 */
function BD09LLtoWGS84($fLng, $fLat){ // 经度,纬度
    $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;
}

Verwandte Empfehlungen:

PHP Tencent Map Sharing-Implementierungsideen und Beispiele für die Konvertierung von Längen- und Breitengraden in Baidu-Kartenlängen- und -Breitengrade

Was soll ich tun, wenn das Reaktionsframework Baidu Map entspricht?

Anwendung von HTML5-Geolocation und Drittanbieter-Tools Baidu Maps

Das obige ist der detaillierte Inhalt vonBeispiel für die gemeinsame Nutzung der Entfernungsberechnung in der PHP-Baidu-Kartenentwicklung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn