`
DarkWingBoy
  • 浏览: 50685 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

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);
分享到:
评论

相关推荐

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

    在Golang和PHP这两种编程语言中,计算两个经纬度之间的距离是一项常见的任务,这通常涉及到地球表面的距离估算。以下将详细介绍这两种语言如何实现这一功能。 首先,我们来看Golang的实现。在给出的示例中,`...

    经纬度计算日出日落golang代码

    通过这两个变量,我们可以确定太阳在特定时间和特定地点的地平线位置,从而推算出日出和日落的精确时刻。 这一过程通常会在Go语言的`suntime.go`文件中实现。在这个文件中,会包含获取当前日期、计算太阳位置、确定...

    golang.org/x/sys/windows

    golang.org/x/sys/windows

    【Golang】计算两个地理坐标之间的距离

    // GeoDistance 计算地理距离,依次为两个坐标的纬度、经度、单位(默认:英里,K =&gt; 公里,N =&gt; 海里) func GeoDistance(lng1 float64, lat1 float64, lng2 float64, lat2 float64, unit ...strin

    Python实现根据两点经纬度求两点距离、航向角源码+论文+go语言版

    在IT领域,尤其是在地理信息系统(GIS)和导航系统中,计算两点之间的距离和航向角是常见的需求。这里我们主要探讨如何使用Python和Go语言来实现这个功能,并结合相关论文来深入理解这些算法。 首先,根据给定的...

    golang.org/x包

    在Golang生态系统中,`golang.org/x`是一个非常重要的包集合,它包含了大量由Go官方维护和贡献的扩展库。这些包覆盖了各种功能,从网络编程到文本处理,为Go开发者提供了丰富的工具和解决方案。`golang.org/x`包系列...

    golang.org/x

    `golang.org/x` 是 Go 语言生态系统中的一个特殊仓库,包含了由 Go 语言官方维护但并未包含在标准库中的各种模块和工具。这个仓库包含了众多实用的第三方组件,如网络编程库、数据库驱动、文本处理工具等。由于 `...

    golang.org/x下的包集合

    https://golang.org/x/下的相关的包国内无法下载,这个可以直接将解压后的golang.org-master/x目录下到包放到GOPATH目录下的golang.org/x路径下面,执行go install 包名称就行了

    Go语言计算两个经度和纬度之间距离的方法

    本文实例讲述了Go语言计算两个经度和纬度之间距离的方法。分享给大家供大家参考。具体实现方法如下: 代码如下:package main   import (  “fmt”  “math” )   func main() {  lat1 := 29.490295  lng1 := ...

    Go编程语言中的Snappy压缩格式。-Golang开发

    要从源代码下载和安装:$ go get github.com/golang/snappy除非另有说明,否则Snappy-Go源文件是根据LICENSE文件中的BSD样式许可分发的。 基准。 golang / snappy基准测试包括压缩(Z)和解压缩(U)十个左右的文件...

    下载golang.org/x包的操作方法

    golang.org/x包放到了https://github.com/golang/text中,下载时需要先在本地建立golang.org/x的目录后,再下载。 mkdir -p golang.org/x git clone https://github.com/golang/text.git 或 go get github....

    golang 扩展package 列表

    https://github.com/golang/arch.git https://github.com/golang/playground.git https://github.com/golang/debug.git https://github.com/golang/term.git https://github.com/golang/time.git ...

    Go+Golang+Beego微服务基础实战.rar

    分享视频教程:Go/Golang/Beego微服务基础实战视频教程,2020年最新录制,完整版400多节视频,附带源码, 本课程从Beego环境搭建开始讲解,涉及Beego知识的方方面面,最后还有企业级项目实战,让你真正能学以致用!

    golang.org.zip

    go语言 下载依赖 package golang.org/x/net/http2/hpack: unrecognized import path "golang.org/x/net/http2/hpack" ... or established connection failed because connected host has failed to respond.)

    demoinfocs-golang:高性能CS

    去弄 go get -u github.com/markus-wa/demoinfocs-golang/v2/pkg/demoinfocs 目录要求快速入门指南例子更多例子文档特征性能/基准版本控制使用 demoinfocs-golang 的项目发展调试测试生成接口生成 Protobuf 代码Git ...

    GoMock是用于Go编程语言的模拟框架。-Golang开发

    gomock GoMock是Go编程...要获取最新发布的版本,请使用:GO111MODULE = on go github.com/golang/mock/ [电子邮件保护]如果您在CI管道中使用模拟量,则更适合固定在特定的模拟量版本上。 文档安装后,您可以使用go d

    最新最全的golang.org/x包

    `golang.org/x` 是 Go 语言生态系统中的一个特殊仓库,包含了由 Go 语言官方维护但并未包含在标准库中的各种扩展包。这些包通常涵盖了网络、文本处理、数据库连接等多个领域,为开发者提供了丰富的功能扩展。由于 `...

    开源项目-golang-protobuf.zip

    这个开源项目可能是对官方golang/protobuf库的补充或者一个分支版本,可能包含了特定的改进、优化或者特性,以适应开发者的需求。文件名“protobuf-master”暗示这可能是项目的主分支,通常包含最新的开发和更新。 ...

Global site tag (gtag.js) - Google Analytics