gpt4 book ai didi

java - 安卓 : how to get the walking distance between two geo coordinates?

转载 作者:搜寻专家 更新时间:2023-10-31 20:07:15 24 4
gpt4 key购买 nike

我用的是这个查询网址

http://maps.google.com/maps?q=from+A+to+B&output=kml

,在这个 question 的答案中给出.但是在我尝试之后,它不适用于坐标。它适用于地址名称。我想我可以先使用谷歌的地理编码来获取地址。但是我想知道是否有另一种方法可以获取两个坐标之间的步行距离?

最佳答案

我的新答案:)

使用 Google Directions API .

应该可以向 http://maps.google.com/maps/api/directions/<json|xml>?<params> 提出请求并将坐标指定为 origindestination范围。 我简单地尝试了一下,但没有返回任何结果。按照他们的文档,它应该可以工作,但他们没有详细解释如何指定纬度和经度。但他们说这是可能的。引用:

[...] origin (required) — The address or textual latitude/longitude value from which you wish to calculate directions [...]

不过,这应该可以帮助您入门。我建议使用 JSON 输出格式。它解析起来要简单得多,并且应该使用更少的带宽(它不像 XML 那样冗长)。

有效:这是一个示例 URL:http://maps.google.com/maps/api/directions/json?origin=49.75332,6.50322&destination=49.71482,6.49944&mode=walking&sensor=false

我之前的回答

可以使用 Haversine 公式轻松确定直线距离。如果您从 Google 检索路线,则可以计算每个路段的距离并将它们相加。

前一段时间,我在博客文章(Haversinepython)中写下了(众所周知的)算法(pl/sql)

这是 python 代码的副本:

from math import sin, cos, radians, sqrt, atan2

def lldistance(a, b):
"""
Calculates the distance between two GPS points (decimal)
@param a: 2-tuple of point A
@param b: 2-tuple of point B
@return: distance in m
"""
r = 6367442.5 # average earth radius in m
dLat = radians(a[0]-b[0])
dLon = radians(a[1]-b[1])
x = sin(dLat/2) ** 2 + \
cos(radians(a[0])) * cos(radians(b[0])) *\
sin(dLon/2) ** 2
#original# y = 2 * atan2(sqrt(x), sqrt(1-x))
y = 2 * asin(sqrt(x))
d = r * y

return d

将其翻译成 Java 应该是微不足道的。

关于java - 安卓 : how to get the walking distance between two geo coordinates?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2963864/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com