获取给定路线的所有 GPS 定位点 ( PHP )
Get all GPS location points of a given route ( PHP )
我正在寻找一种方法来获取给定路线的所有 GPS 坐标 而不是 使用 Google 地图 JS 库,因为我想在服务器端获取数据。
So I have figured it out and posted the solution as an answer. Hope this will be useful for somebody :)
干杯!!
使用 Google 路线 API 您可以获得路线的 "overview_polyline"。通过折线解码器,您可以获得给定路线上的所有 GPS 坐标。
以上 link 将 return 所有步骤作为 json 响应,并且在响应末尾有一个名为 "overview_polyline" 的元素;
响应示例:-
"overview_polyline": {
"points": "_p_h@ilzfNQtAWOiAk@c@OeAJgBn@eAj@cAf@wChBo@f@OXGf@GLKFWFBz@TlAJj@b@jARt@Hv@R`BRdANx@LZz@fBv@tAb@n@Zt@d@pAd@rADNH`@Vn@TV`@ZtAlAf@x@Jh@@^?zAQhBWrBMrBAl@G~@Mr@On@s@`BU|AKxAHv@Az@KjBi@~DEp@Dl@@h@A\GtAF`@Vd@FZAl@KhAE\f@Xf@^RVP^?v@MrASfECzD?fCCpC@La@BiAFoAFmCPoBPuCb@_ARcAVy@Xo@\_At@uAnA}AnAOLABCBA@]|@Ib@Gx@UlDCdBWnGQpCHj@BJ@BBFALEDYvBWdAM\k@xAs@pAs@dAi@n@oBjBoAbA}@h@SHaL|CiWnHgLzCuD`A{Cl@aKlB_BX{A^kFvA}@XyEfBoBr@uBv@gDnA{E|A{GrBmHdBmD|@aIzBkBf@mCj@sB^{Ch@mCh@yD|@}GjB_EnAoDbAoCp@oDz@cDx@gDv@gIhBoB^cALuAN}ALmCLeDDaGAoB@iBHaEZyBX{Fp@eFl@uAJeBDgA?kACaAGkAMyAYeBa@cCy@wHqCwAa@mEs@mC_@{CUmIc@oCIw@IsAW}Bc@IBK?IEGK?KBK\[JOV{@p@yC?u@K_BSsBCk@?iCFm@@QEs@GYS[K[A]B]As@K_A?oA@cA"
},
使用折线解码器,您可以获得所有 GPS 坐标。互联网上有许多折线解码器。
这里有一些,
- Javascript : https://github.com/mapbox/polyline
- PHP : https://github.com/dyaaj/polyline-encoder
- Google 地图:https://developers.google.com/maps/documentation/utilities/polylineutility
Make sure to replace \ (double backslash) into \ (single backslash) in polyline string.
如果您仍想根据特定距离分割(例如:200m)获取点,您可以编写代码来测量相邻位置的距离,并通过删除不需要的点来构建点数组。
我正在寻找一种方法来获取给定路线的所有 GPS 坐标 而不是 使用 Google 地图 JS 库,因为我想在服务器端获取数据。
So I have figured it out and posted the solution as an answer. Hope this will be useful for somebody :)
干杯!!
使用 Google 路线 API 您可以获得路线的 "overview_polyline"。通过折线解码器,您可以获得给定路线上的所有 GPS 坐标。
以上 link 将 return 所有步骤作为 json 响应,并且在响应末尾有一个名为 "overview_polyline" 的元素;
响应示例:-
"overview_polyline": {
"points": "_p_h@ilzfNQtAWOiAk@c@OeAJgBn@eAj@cAf@wChBo@f@OXGf@GLKFWFBz@TlAJj@b@jARt@Hv@R`BRdANx@LZz@fBv@tAb@n@Zt@d@pAd@rADNH`@Vn@TV`@ZtAlAf@x@Jh@@^?zAQhBWrBMrBAl@G~@Mr@On@s@`BU|AKxAHv@Az@KjBi@~DEp@Dl@@h@A\GtAF`@Vd@FZAl@KhAE\f@Xf@^RVP^?v@MrASfECzD?fCCpC@La@BiAFoAFmCPoBPuCb@_ARcAVy@Xo@\_At@uAnA}AnAOLABCBA@]|@Ib@Gx@UlDCdBWnGQpCHj@BJ@BBFALEDYvBWdAM\k@xAs@pAs@dAi@n@oBjBoAbA}@h@SHaL|CiWnHgLzCuD`A{Cl@aKlB_BX{A^kFvA}@XyEfBoBr@uBv@gDnA{E|A{GrBmHdBmD|@aIzBkBf@mCj@sB^{Ch@mCh@yD|@}GjB_EnAoDbAoCp@oDz@cDx@gDv@gIhBoB^cALuAN}ALmCLeDDaGAoB@iBHaEZyBX{Fp@eFl@uAJeBDgA?kACaAGkAMyAYeBa@cCy@wHqCwAa@mEs@mC_@{CUmIc@oCIw@IsAW}Bc@IBK?IEGK?KBK\[JOV{@p@yC?u@K_BSsBCk@?iCFm@@QEs@GYS[K[A]B]As@K_A?oA@cA"
},
使用折线解码器,您可以获得所有 GPS 坐标。互联网上有许多折线解码器。
这里有一些,
- Javascript : https://github.com/mapbox/polyline
- PHP : https://github.com/dyaaj/polyline-encoder
- Google 地图:https://developers.google.com/maps/documentation/utilities/polylineutility
Make sure to replace \ (double backslash) into \ (single backslash) in polyline string.
如果您仍想根据特定距离分割(例如:200m)获取点,您可以编写代码来测量相邻位置的距离,并通过删除不需要的点来构建点数组。