我正在尝试绘制与Google地图街道网络相匹配的路线。
我知道如何从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页面上的示例响应中提供的示例细分也非常不适合基础道路几何体。
答案 0 :(得分:2)
我也很难过。我设法提出的唯一解决方案(尽管效果很好)是使用Google的快速路径API。将不准确的折线的坐标发送到API,它将返回更正后的坐标。
希望这有帮助。
答案 1 :(得分:0)
算法将坐标舍入为1e5。
因此,无法编码适合底层道路网络渲染的折线,该折线在最高缩放级别具有更高的精度。
此图像显示最大位置精度,坐标舍入为1e5。
答案 2 :(得分:0)
答案 3 :(得分:0)
您可以尝试执行以下步骤(如果您使用的是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的响应中提取的:根>路线> Overview_polyline>点
地图中的结果点可以这样显示: