golang與php實(shí)現(xiàn)計(jì)算兩個(gè)經(jīng)緯度之間距離的方法

字號(hào):


    本文實(shí)例講述了golang與php實(shí)現(xiàn)計(jì)算兩個(gè)經(jīng)緯度之間距離的方法。分享給大家供大家參考,具體如下:
    golang版本:
    package main
    import (
        "fmt"
        "math"
    )
    func main() {
        lat1 := 29.490295
        lng1 := 106.486654
        lat2 := 29.615467
        lng2 := 106.581515
        fmt.Println(EarthDistance(lat1, lng1, lat2, lng2))
    }
    // 返回值的單位為米
    func EarthDistance(lat1, lng1, lat2, lng2 float64) float64 {
        radius := float64(6371000) // 6378137
        rad := math.Pi/180.0
        lat1 = lat1 * rad
        lng1 = lng1 * rad
        lat2 = lat2 * rad
        lng2 = lng2 * rad
        theta := lng2 - lng1
        dist := math.Acos(math.Sin(lat1) * math.Sin(lat2) + math.Cos(lat1) * math.Cos(lat2) * math.Cos(theta))
        return dist * radius
    }
    php版本:
    <?php
    // 返回值的單位為米
    function pc_sphere_distance($lat1, $lon1, $lat2, $lon2, $radius = 6371000) {
      $rad = doubleval(M_PI/180.0);
      $lat1 = doubleval($lat1) * $rad;
      $lon1 = doubleval($lon1) * $rad;
      $lat2 = doubleval($lat2) * $rad;
      $lon2 = doubleval($lon2) * $rad;
      $theta = $lon2 - $lon1;
      $dist = acos(sin($lat1) * sin($lat2) + cos($lat1) * cos($lat2) * cos($theta));
      return $dist * $radius * 1000;
    }
    $lat1 = 29.490295;
    $lon1 = 106.486654;
    $lat2 = 29.615467;
    $lon2 = 106.581515;
    echo pc_sphere_distance($lat1, $lon1, $lat2, $lon2);
    希望本文所述對(duì)大家Go語(yǔ)言程序設(shè)計(jì)有所幫助。