如何从 Google Maps Directions Api 获取折线

Posted

技术标签:

【中文标题】如何从 Google Maps Directions Api 获取折线【英文标题】:How to get polyline from Google Maps Directions Api 【发布时间】:2017-08-21 10:58:56 【问题描述】:

我正在尝试使用 Google Maps Directions Api 绘制polyline,但是我如何使用 JSON 值来绘制它,因为在 api 中,有很多 lat 和 long 以及 polylines.points 之类的这个:

cxwnFtdct@JEVGLCR?PDTFNHTNNNPJPDRDN?JCHCv@i@VQTK`CkF

我不知道我应该使用哪一个,谁能帮助我:)


  geocoded_waypoints: [
    ,
    
  ],
  routes: [
    
      bounds: 
        northeast: 
          lat: 39.2846595,
          lng: -8.7036795
        ,
        southwest: 
          lat: 38.7223249,
          lng: -9.1393372
        
      ,
      copyrights: "Dados do mapa ©2017 Google, Inst. Geogr. Nacional",
      legs: [
        
          distance: ,
          duration: ,
          end_address: "Lisboa, Portugal",
          end_location: 
            lat: 38.7223249,
            lng: -9.1393372
          ,
          start_address: "Santarém, Portugal",
          start_location: 
            lat: 39.2846595,
            lng: -8.7049071
          ,
          steps: [
            
              distance: ,
              duration: ,
              end_location: 
                lat: 39.2822117,
                lng: -8.7036403
              ,
              html_instructions: "Siga <b>sul</b> em direção a <b>N3</b>",
              polyline: 
                points: "cxwnFtdct@JEVGLCR?PDTFNHTNNNPJPDRDN?JCHCv@i@VQTK`CkF"
              ,
              start_location: 
                lat: 39.2846595,
                lng: -8.7049071
              ,
              travel_mode: "DRIVING"
            ,
            ,
          ],
          traffic_speed_entry: [],
          via_waypoint: []
        
      ],
      overview_polyline:    points:"cxwnFtdct@dAQlAf@fAf@|Aq@l@]pCcFhCjA|LfJlAT~@IpDi@jAb@f@HXi@t@kBhBeBx@Qz@z@dClHzFpW`H|RvTpj@`AxAdBdAnAXhB?fBk@rAcAnG_HhCgAjAKrATbA`Al@lBHnAc@rFgBhIkCxMBfIlBvHnBtCnB|AnEdCrJxFj@fB@h@OhAgCtHGfCl@jAlA\jE]tDBzBb@tLxFtK~E`d@hShIzEtDhDxDrEfDpFlFjNvDtRdDjThF`TzH`QhEhG|EvFhL`JpJtE|LpEdOpFjOzGlPfJlHzE~NjLfQvPfP|RtHrKxDjGfI|NdHbOvGjPfCbHpCtIvJh_@vG|[|CtNvFvSvE~MfI|QzLbTfNxQbKlKrRzP|NnNvNlQjIzMnLfV`T|h@nDbHhIdMxFjH~JrMnEfHzIrQfHvOtEjI|MnQfNzP`FzI~EnLrKp[nDlHvErHzL~MbRbM`EjCjFxEtRnX|D~EjIhI~WrRxGlGdFnG`JjNxHzKfTxVfKfRfMbRlErHtBlFxIjYvHnPpBtFxF~WpCjHjGhJfDzClF~CnDlArDl@pC\vHXvX[lOaB|GcBdFqBxQwJbDmAxE_ApJ_@jEXtItBrQ~EbQbDlUfBpMfA|IxCbF`DhGlGnJjKtJrF`SpFbRnDdUxAbGrAlEjBnFpDtNnMfGlE~[lTbRdQjTpUxH`GjHfEnGlC`O|DrUxEnEzAfFrBnSpIjPnDxSlAf\lAl~@hDzRrAjOpBvKrBrQtEv^pM``@rPrR|JxSdMlGnGfGtH~HxFdFlBtGfApGp@bG|AnHxD|FzFrH`L~FvH|HrFrFtBtFjA~Mt@pHR|FhA`IfDpEbDzFxGrHrKhEtErF`EnS`MzMvItSdUfF~DtE~B|SrInEnBzDtCxN`QpQfVtQ~Yjn@~fAnK`RvLlRzEjF|GlFrc@vUfRjKfIvGxDhEjIxKdN~T`L~MrFvE~LhIlp@fb@xCtBzFtFbEzFbDrGhH`TfF|JnGfHzEdD|UdIpTdHtKtFj]nUrEzC~[pTfLfG|EbB~KfCnTvDpmAxSzs@~LhOfDzOdFfOxGdY`O`k@zYnVzMlK|HrFjFbXj[rCbCvDfB|FfBbD^xRBlb@nBrIdArJvDfD|B|FzFvFzHnCbIDrCk@dA_A_@q@mHz@sAvAJ^f@r@n@x@UR_@fBGjET`S~@ro@pCpXpAfFp@dEhCnGtE@HXl@n@H^W|ASpShAbZxAtPp@~SjAzGZKdDStBd@x@dC@nEVz@HtAp@b@\OZ|AbBxDnFJf@"
      ,
      summary: "A1",
      warnings: [],
      waypoint_order: []
    
  ],
  status: "OK"

【问题讨论】:

【参考方案1】:

将overview_polyline转换为LatLng列表并在地图中添加为polyling

使用谷歌提供的 PolyUtil。

https://github.com/googlemaps/android-maps-utils/blob/master/demo/src/com/google/maps/android/utils/demo/PolyDecodeDemoActivity.java

https://github.com/googlemaps/android-maps-utils/blob/master/library/src/com/google/maps/android/PolyUtil.java

【讨论】:

出现错误,我无法在 startDemo() 方法中覆盖超类【参考方案2】:

检查Google Maps Android API Utility Library 有一些预定义的方法来解析折线等等。

【讨论】:

【参考方案3】:

我已经将我的答案放到了一些帖子中,其中也包含了你的答案。 您还可以找到 Parser 类和 Aysc 类,从地图上的响应中绘制折线。

这里是发帖链接 How to buffer a polyline in Android or draw a polygon around a polyline?

【讨论】:

以上是关于如何从 Google Maps Directions Api 获取折线的主要内容,如果未能解决你的问题,请参考以下文章

如何提示从嵌入式地图打开 Google Maps Directions 到 Google Maps Navigator 的页面?

如何从 google.maps.places.Autocomplete 获得超过 5 个结果?

如何使用 Alternatives=true 从 Google Maps 路线中找出最短路线?

如何使用 Google Maps V3 从 lat/lng 获取城市?

默认情况下,我们如何从 Google Direction API 获得从 A 点到 B 点的最短距离路线

如何从 Google Maps Directions Api 获取折线