使用Google Map距离矩阵API,通过经纬度实现服务器端多地址计算距离。

4
https://www.npmjs.com/package/google-distance-matrix的一个示例中,我们可以添加多个目标地点的经纬度。
服务器端代码如下:
string Test = "http://maps.googleapis.com/maps/api/distancematrix/json?origins=Lat1,long1&destinations=Lat2,long2&sensor=false"

现在的问题是如何在多个起点和终点模式下使用它。 我们可以做些类似的事情:

string Test = "http://maps.googleapis.com/maps/api/distancematrix/json?origins=Lat1,long1,lat2,long2&destinations=Lat3,long3,Lat4,long4&sensor=false"

示例

这是两个链接:

http://maps.googleapis.com/maps/api/distancematrix/json?origins=23.020284,72.4396566&destinations=22.3039702,70.7671403&sensor=false http://maps.googleapis.com/maps/api/distancematrix/json?origins=23.027100,72.508000&destinations=22.999500,72.600300&sensor=false

将这两个链接组合成一个:

http://maps.googleapis.com/maps/api/distancematrix/json?origins=23.020284,72.4396566,23.027100,72.508000&destinations=22.3039702,70.7671403,22.999500,72.600300&sensor=false

4个回答

18

我通过使用"|"分隔符解决了这个问题。 谢谢大家。


一个完整的例子会很有帮助,以便澄清“|”应该放在哪里。 - eriel marimon

0

楼上的答案是正确的,我只是想加一个带有清晰示例的答案。请注意纬度和经度对之间使用管道符号 (|) 分隔。一个由数组组成的数组 [[a,b], [c,d]] 是不起作用的。

http://maps.googleapis.com/maps/api/distancematrix/json?origins=23.020284,72.4396566|23.027100,72.508000&destinations=22.3039702,70.7671403|22.999500,72.600300&sensor=false$key=AIza....OgXQ

0

获取多个坐标的方向的另一种酷炫方法是将所有起点和终点编码为折线 (Google的编码折线算法)。

Google文档:编码的折线

或者,您可以使用 编码的折线算法 提供一个编码的坐标集。如果您有大量起点,这非常有用,因为使用编码的折线时 URL 显着缩短。- 编码的折线必须以 enc: 为前缀,后面跟冒号:。例如:origins=enc:gfo}EtohhU:- 您还可以包括多个编码的折线,使用管道符号| 分隔。例如:origins=enc:wc~oAwquwMdlTxiKtqLyiK:| enc:c~vnAamswMvlTor@tjGi}L:|enc:udymA{~bxM:

对于大多数常用语言,已经构建了客户端库。例如针对 Ruby 的 klaxit/fast-polylines (github link) gem。

用法

require "fast_polylines"

origins = FastPolylines.encode([[38.5, -120.2], [40.7, -120.95], [43.252, -126.453]])
destinations = FastPolylines.encode([[38.6, -120.4], [40.4, -120.2], [43.26, -126.463]])


url = http://maps.googleapis.com/maps/api/distancematrix/json?origins=enc:#{origins}:&destinations=enc:#{destinations}:&sensor=false$key=AIza....OgXQ

请注意,编码的起点和终点需要使用enc:前缀和:后缀。例如:origins=enc:XXXX:


-1

1
这并未回答问题的核心。它没有指明如何同时获取多个地点的方向。 - eriel marimon
您可以通过“|”(竖线)分隔符添加多个目的地或起点。https://maps.googleapis.com/maps/api/distancematrix/json?destinations=m13bb|LS9 7TU&language=GB&mode=bicycling&origins=Skipton Castle, The Bailey, Skipton BD23 1AW, United Kingdom&key=您的API密钥 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接