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环境搭建最新方法
Sep 05 PHP
xml+php动态载入与分页
Oct 09 PHP
PHP开发的一些注意点总结
Oct 12 PHP
免费手机号码归属地API查询接口和PHP使用实例分享
Apr 10 PHP
php实现的Cookies操作类实例
Sep 24 PHP
php获取文件名后缀常用方法小结
Feb 24 PHP
关于扩展 Laravel 默认 Session 中间件导致的 Session 写入失效问题分析
Jan 08 PHP
php使用Header函数,PHP_AUTH_PW和PHP_AUTH_USER做用户验证
May 04 PHP
Yii框架实现图片上传的方法详解
May 20 PHP
PHP封装cURL工具类与应用示例
Jul 01 PHP
PHP使用反向Ajax技术实现在线客服系统详解
Jul 01 PHP
Laravel 已登陆用户再次查看登陆页面的自动跳转设置方法
Sep 30 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
THINKPHP+JS实现缩放图片式截图的实现
2010/03/07 PHP
最新的10款jQuery内容滑块插件分享
2011/09/18 Javascript
分页栏的web标准实现
2011/11/01 Javascript
jQuery结合PHP+MySQL实现二级联动下拉列表[实例]
2011/11/15 Javascript
JQueryEasyUI datagrid框架的基本使用
2013/04/08 Javascript
Javascript实现简单的富文本编辑器附演示
2014/06/16 Javascript
深入分析js的冒泡事件
2014/12/05 Javascript
jQuery中siblings()方法用法实例
2015/01/08 Javascript
javascript结合Canvas 实现简易的圆形时钟
2015/03/11 Javascript
JS实现浏览器状态栏文字从右向左弹出效果代码
2015/10/27 Javascript
javascript自定义滚动条实现代码
2020/04/20 Javascript
JavaScript实现跑马灯抽奖活动实例代码解析与优化(二)
2016/02/16 Javascript
Jquery组件easyUi实现表单验证示例
2016/08/23 Javascript
详解Web使用webpack构建前端项目
2017/09/23 Javascript
JavaScript寄生组合式继承实例详解
2018/01/06 Javascript
vue左右侧联动滚动的实现代码
2018/06/06 Javascript
如何实现iframe父子传参通信
2020/02/05 Javascript
python获得linux下所有挂载点(mount points)的方法
2015/04/29 Python
Python 爬虫模拟登陆知乎
2016/09/23 Python
python 表达式和语句及for、while循环练习实例
2017/07/07 Python
django_orm查询性能优化方法
2018/08/20 Python
Python3 串口接收与发送16进制数据包的实例
2019/06/12 Python
python openCV自制绘画板
2020/10/27 Python
详解如何使用CSS3中的结构伪类选择器和伪元素选择器
2020/01/06 HTML / CSS
大女孩胸罩:Big Girls Bras
2016/12/15 全球购物
京东全球售:直邮香港,澳门,台湾,美国,澳大利亚等地区
2017/09/24 全球购物
英国领先的电视购物零售商:Ideal World
2019/03/18 全球购物
.NET程序员的数据库面试题
2012/10/10 面试题
2014新年寄语
2014/01/20 职场文书
考试违纪检讨书
2014/02/02 职场文书
致400米运动员广播稿
2014/02/07 职场文书
委托书的写法
2014/09/16 职场文书
党员查摆剖析材料
2014/10/10 职场文书
个人职业及收入证明
2014/10/13 职场文书
不同意离婚上诉状
2015/05/23 职场文书
MySQL root密码的重置方法
2021/04/21 MySQL