1

我正在尝试绘制应与 Google Maps 街道网络匹配的路线。

我知道如何从 Google Maps Directions API 序列化 JSON 结果。

我现在正在研究从各个路由步骤对折线进行编码。

我在 stackoverflow 上找到了一些解码器算法,但首先测试了 Google 自己的Interactive Polyline Encoder。我希望编码的行与谷歌地图匹配,但事实并非如此。

屏幕截图显示了左侧交互式折线编码器中编码段的结果,右侧显示了 Google 地图路线的结果。

在此处输入图像描述

编码折线为“uxhuBxrc|QPA@?@?B?B@@B@D@HDFD@B@H@JBB@DBFJ”

谷歌的交互式折线编码器中的算法是否有可能是错误的?

有没有人测试过Jeffrey Sambells 算法并知道结果是否与谷歌交互式解码器的结果相匹配?

干杯,丹尼斯

编辑:问题在于返回的折线段而不是编码算法。即使是 Google 在 Directions API 页面上的示例响应中提供的示例片段也非常不适合底层道路几何形状。

在此处输入图像描述

4

4 回答 4

2

我也遇到了困难。我设法想出的唯一解决方案(虽然效果很好)是使用 Google 的 snap to road API。将不准确的折线的坐标发送到 API,它会返回更正后的坐标。

希望这可以帮助。

于 2016-04-21T22:57:07.400 回答
0

几个月后,我终于得到了谷歌的回复。不幸的是,他们无法理解问题并提供帮助。我再次查看了解码算法,现在我可以自己回答这个问题了。

该算法将坐标四舍五入为 1e5。

谷歌折线算法

因此,不可能对与底层道路网络的渲染相匹配的折线进行编码,该渲染在最高缩放级别下具有更高的精度。

该图像显示了坐标四舍五入为 1e5 的最大位置精度。

在此处输入图像描述

于 2014-08-28T17:19:37.103 回答
0

你可以试试这个:http: //zevross.com/blog/2014/09/23/convert-google-directions-to-geojson-points-or-polylines/ ?subscribe=success#blog_subscription-3

您可以尝试以下步骤(如果您使用的是 Node.js):

npm install polyline

接着:

var polyline = require('polyline');

// returns an array of lat, lon pairs
polyline.decode('_p~iF~ps|U_ulLnnqC_mqNvxq`@')

其中字符串“_p~iF~ps|U_ulLnnqC_mqNvxq`@”是从 Google Maps API 的响应中提取的:root > routes > overview_polyline > points

在此处输入图像描述

地图中的结果点可以如下所示:

在此处输入图像描述

于 2019-03-05T23:36:37.260 回答
0

在此处输入图像描述

您还可以从以下位置下载示例项目

https://github.com/xomena-so/so47492459

不要忘记用你的替换 API 密钥。

我希望这有帮助!

于 2018-01-29T13:26:06.503 回答