我正在尝试绘制与Google Maps街道网络相匹配的路线。
我知道如何从Google Maps Directions API序列化JSON结果。
我现在正在寻找从各个路由步骤编码折线。
我在stackoverflow上找到了一些解码器算法,但首先测试了谷歌自己的Interactive Polyline Encoder。我希望编码的行与谷歌地图匹配,但事实并非如此。
屏幕截图显示左侧交互式折线编码器中编码段的结果以及右侧Google地图路径的结果。
编码折线是“uxhuBxrc | QPA @?@?B?B @@ B @ D @ HDFD @ B @ H @ JBB @ DBFJ”
Google的交互式折线编码器中的算法是否有可能出错?
有没有人测试Jeffrey Sambells algorithm并知道结果是否与Google的交互式解码器的结果相符?
干杯,丹尼斯
编辑:问题是返回的折线段而不是编码算法。即使Google在Directions API页面上的示例响应中提供的示例细分也与基础道路几何图形非常不匹配。
我也很困难。我设法提出的唯一解决方案(尽管效果很好)是使用Google的snap to road API。将不准确的折线的坐标发送到API,它将返回更正的坐标。
希望这可以帮助。
几个月后,我终于得到了Google的回复。不幸的是,他们无法理解问题和帮助。我再次看了解码算法,现在我能够自己回答这个问题。
该算法将坐标舍入为1e5。
因此,不可能编码适合于在最高缩放级别具有更高精度的基础道路网络的渲染的折线。
此图像显示最大位置精度,坐标舍入为1e5。
您可以尝试以下步骤(如果您使用的是Node.js):
npm install polyline
然后:
var polyline = require('polyline');
// returns an array of lat, lon pairs
polyline.decode('_p~iF~ps|U_ulLnnqC_mqNvxq`@')
从Google Maps API的响应中提取字符串“_p~iF~ps | U_ulLnnqC_mqNvxq` @”:root> routes> overview_polyline> points
地图中的结果点可以显示如下: