Webpage 网站如何计算两个地理位置之间的距离?

Webpage 网站如何计算两个地理位置之间的距离?,webpage,distance,Webpage,Distance,我想在我的网站上嵌入一个功能,可以告诉两个地址之间的距离,比如说地址1:100 Main St,IL。。。地址2:200林肯S 我知道一种方法:我可以使用Selenium去谷歌地图,然后以英里为单位计算距离 有没有更有效的方法?我想,这取决于你需要的准确度。你要做的第一件事就是把这些地址编码成纬度/经度坐标。谷歌正是这样做的。一旦你有了这些坐标,就需要用数学来确定它们之间的距离 我曾经写过这样的计算。设置有点不同,我根据定义的距离从已知纬度/经度坐标的数据库中选择记录,但数学基本相同。从我的查询

我想在我的网站上嵌入一个功能,可以告诉两个地址之间的距离,比如说
地址1:100 Main St,IL
。。。地址2:200林肯S

我知道一种方法:我可以使用
Selenium
去谷歌地图,然后以英里为单位计算距离


有没有更有效的方法?

我想,这取决于你需要的准确度。你要做的第一件事就是把这些地址编码成纬度/经度坐标。谷歌正是这样做的。一旦你有了这些坐标,就需要用数学来确定它们之间的距离

我曾经写过这样的计算。设置有点不同,我根据定义的距离从已知纬度/经度坐标的数据库中选择记录,但数学基本相同。从我的查询中,您基本上可以只提取计算部分,用一个坐标替换“中心纬度”和“中心经度”,用另一个坐标替换“纬度”和“经度”。大概是这样的:

ACOS(
  COS($latitudeA * (PI()/180)) *
  COS($longitudeA* (PI()/180)) *
  COS($latitudeB * (PI()/180)) *
  COS($longitudeB * (PI()/180)) +
  COS($latitudeA * (PI()/180)) *
  SIN($longitudeA * (PI()/180)) *
  COS($latitudeB * (PI()/180)) *
  SIN($longitudeB * (PI()/180)) +
  SIN($latitudeA * (PI()/180)) *
  SIN($latitudeB * (PI()/180))
) *
(
  ($equatorial_radius * $polar_radius) /
  (
    SQRT(
      ($equatorial_radius * $equatorial_radius) -
      (
        (
          ($equatorial_radius * $equatorial_radius) -
          ($polar_radius * $polar_radius)
        ) *
        (
          COS($latitudeA) *
          COS($latitudeA)
        )
      )
    )
  )
)
其中:

  • $latitudeA
    是第一个坐标的纬度
  • $longitudeA
    是第一个坐标的经度
  • $latitudeB
    是第二个坐标的纬度
  • $longitudeB
    是第二个坐标的经度
  • $equitorial_radius
    是地球绕赤道的半径
  • $polar_radius
    是地球沿两极的半径
  • SIN
    COS
    SQRT
    ACOS
    等都是您使用的任何代码中的数学函数
这将使用半径值中使用的任何测量单位,在两者之间产生非常精确的距离。(我使用了美国英里数)精确到几米以内,如果不是更小的话

所有这些数学计算的原因是为了计算地球的曲率(包括赤道处的凸起),以便绘制曲线表面上两点之间的距离