如何从 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 获取城市?