golang与php实现计算两个经纬度之间距离的方法

yipeiwu_com5年前PHP代码库

本文实例讲述了golang与php实现计算两个经纬度之间距离的方法。分享给大家供大家参考,具体如下:

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);

希望本文所述对大家Go语言程序设计有所帮助。

相关文章

探讨如何在PHP开启gzip页面压缩实例

示例一(用php的内置压缩函数):复制代码 代码如下:<?PHP if(Extension_Loaded('zlib')) Ob_Start('ob_gzhandler'); He...

PHP实现的贪婪算法实例

本文实例讲述了PHP实现的贪婪算法。分享给大家供大家参考,具体如下: 背景介绍:贪婪算法与数据结构知识库算法可以说是离我们生活最近的一种算法,人总是贪婪的嘛,所以这种算法的设计是很符合人...

PHP加密解密字符串汇总

项目中有时我们需要使用PHP将特定的信息进行加密,也就是通过加密算法生成一个加密字符串,这个加密后的字符串可以通过解密算法进行解密,便于程序对解密后的信息进行处理。 最常见的应用在用户登...

PHP 变量定义和变量替换的方法

有两种方法把变量替换到字符串中——简单的方法和复杂的方法。 简单的方法是把变量名放在双引号字符串或heredoc中: $who = ‘Kilroy'; $where = ‘here';...

PHP无限分类的类

复制代码 代码如下:<?php /**  * @author        YangHuan &nb...