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


Posted in PHP onJuly 22, 2016

本文实例讲述了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 相关文章推荐
PHP 和 XML: 使用expat函数(一)
Oct 09 PHP
PHP 中文处理技巧
Apr 25 PHP
ThinkPHP结合AjaxFileUploader实现无刷新文件上传的方法
Oct 29 PHP
编写PHP脚本过滤用户上传的图片
Jul 03 PHP
php实现博客,论坛图片防盗链的方法
Oct 15 PHP
PHP 文件锁与进程锁的使用示例
Aug 07 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
Dec 25 PHP
针对thinkPHP5框架存储过程bug重写的存储过程扩展类完整实例
Jun 16 PHP
laravel 修改.htaccess文件 重定向public的解决方法
Oct 12 PHP
Thinkphp 在api开发中异常返回依然是html的解决方式
Oct 16 PHP
php桥接模式应用案例分析
Oct 23 PHP
关于PHP中interface的用处详解
Jul 26 PHP
PHP微信刮刮卡 附微信接口
Jul 22 #PHP
php判断用户是否关注微信公众号
Jul 22 #PHP
微信支付扫码支付php版
Jul 22 #PHP
php如何执行非缓冲查询API
Jul 22 #PHP
PHP面试常用算法(推荐)
Jul 22 #PHP
微信红包随机生成算法php版
Jul 21 #PHP
php集成动态口令认证
Jul 21 #PHP
You might like
php 图片上传类代码
2009/07/17 PHP
ie与session丢失(新窗口cookie丢失)实测及解决方案
2013/07/15 PHP
php结合正则批量抓取网页中邮箱地址
2015/05/19 PHP
php获取英文姓名首字母的方法
2015/07/13 PHP
php并发加锁示例
2016/10/17 PHP
javascript应用:Iframe自适应其加载的内容高度
2007/04/10 Javascript
JavaScript 异步调用框架 (Part 6 - 实例 &amp; 模式)
2009/08/04 Javascript
jquery下onpropertychange事件的绑定方法
2010/08/01 Javascript
jquery 查找iframe父级页面元素的实现代码
2011/08/28 Javascript
js控制再次点击按钮之间的间隔时间可防止重复提交
2014/08/01 Javascript
JavaScript中获取样式的原生方法小结
2014/10/08 Javascript
JavaScript 异常处理 详解
2015/02/06 Javascript
jquery实现Slide Out Navigation滑出式菜单效果代码
2015/09/07 Javascript
基于Javascript实现返回顶部按钮
2016/02/29 Javascript
JS数组操作(数组增加、删除、翻转、转字符串、取索引、截取(切片)slice、剪接splice、数组合并)
2016/05/20 Javascript
使用纯JS代码判断字符串中有多少汉字的实现方法(超简单实用)
2016/11/12 Javascript
jQuery的$.extend 浅拷贝与深拷贝
2017/03/08 Javascript
浅析js中mvvm模式实现的原理
2018/10/06 Javascript
详解vue中v-model和v-bind绑定数据的异同
2020/08/10 Javascript
解决Antd Table表头加Icon和气泡提示的坑
2020/11/17 Javascript
[50:50]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.20
2020/12/23 DOTA
python中使用xlrd、xlwt操作excel表格详解
2015/01/29 Python
Python连接PostgreSQL数据库的方法
2016/11/28 Python
Python之用户输入的实例
2018/06/22 Python
python2 与 pyhton3的输入语句写法小结
2018/09/10 Python
如何将你的应用迁移到Python3的三个步骤
2019/12/22 Python
Python代码覆盖率统计工具coverage.py用法详解
2020/11/25 Python
Schutz鞋官方网站:Schutz Shoes
2017/12/13 全球购物
法国最大的在线眼镜店:EasyLunettes
2019/08/26 全球购物
学习演讲稿范文
2014/05/10 职场文书
淘宝客服工作职责
2014/07/11 职场文书
毕业生实习期转正自我鉴定
2014/09/26 职场文书
2015年试用期工作总结范文
2015/05/28 职场文书
vue中的可拖拽宽度div的实现示例
2022/04/08 Vue.js
java中为什么说子类的构造方法默认访问的是父类的无参构造方法
2022/04/13 Java/Android
win10如何更改appdata文件夹的默认位置?
2022/07/15 数码科技