如何在谷歌地图服务的Go客户端中使用方向响应
How to use Directions response in the Go client for Google Maps Services?
在Go中使用"googlemaps.github.io/maps"获取方向时,响应是一组地图。路线有没有办法将此响应转换为javascript的google.maps.DirectionsRenderer();
可读的内容,其目的是通过go服务器获得指示,并将数据分发到多个平台。欢迎就如何将这些数据转换为可视化地图提出任何建议。
Go代码:
package main
import (
"log"
"googlemaps.github.io/maps"
"github.com/kr/pretty"
"golang.org/x/net/context"
)
func checkForError(err error) {
if err != nil{
log.Fatal(err)
}
}
func main() {
c, err := maps.NewClient(maps.WithAPIKey("myapikey"))
checkForError(err)
r := &maps.DirectionsRequest{
Origin: "Hollywood, FL",
Destination: "Davie, FL",
}
resp, _, err := c.Directions(context.Background(), r)
checkForError(err)
// render :=
pretty.Println(resp)
}
输出:
[]maps.Route{
{
Summary: "I-95 N and I-595 W",
Legs: {
&maps.Leg{
Steps: {
&maps.Step{
HTMLInstructions: "Head <b>east</b> on <b>Hollywood Blvd</b> toward <b>S Dixie Hwy</b>",
Distance: maps.Distance{HumanReadable:"217 ft", Meters:66},
Duration: 23000000000,
StartLocation: maps.LatLng{Lat:26.0112983, Lng:-80.1494921},
EndLocation: maps.LatLng{Lat:26.0113264, Lng:-80.14883689999999},
Polyline: maps.Polyline{Points:"siw}CheehN?e@Cq@Ai@"},
Steps: nil,
TransitDetails: (*maps.TransitDetails)(nil),
TravelMode: "DRIVING",
},
&maps.Step{
HTMLInstructions: "Make a <b>U-turn</b> at <b>S 21st Ave</b>",
Distance: maps.Distance{HumanReadable:"0.6 mi", Meters:886},
Duration: 90000000000,
StartLocation: maps.LatLng{Lat:26.0113264, Lng:-80.14883689999999},
EndLocation: maps.LatLng{Lat:26.0111533, Lng:-80.1575536},
Polyline: maps.Polyline{Points:"yiw}CfaehNU??h@?r@BpAJVDfFHlOBfDDlCB|C@z@H~F"},
Steps: nil,
TransitDetails: (*maps.TransitDetails)(nil),
TravelMode: "DRIVING",
},
&maps.Step{
HTMLInstructions: "At the traffic circle, take the <b>3rd</b> exit and stay on <b>Hollywood Blvd</b>",
Distance: maps.Distance{HumanReadable:"0.6 mi", Meters:937},
Duration: 148000000000,
StartLocation: maps.LatLng{Lat:26.0111533, Lng:-80.1575536},
EndLocation: maps.LatLng{Lat:26.011037, Lng:-80.16587369999999},
Polyline: maps.Polyline{Points:"uhw}CtwfhNGJAB?H?D?J?FAD?DCDCDCDSNUD]N_@XY''Ub@GRGPIh@Ch@Bd@BJDXN`@DFLVVZ''T''P`@JNJHFFHBFBN@F?JBpB?d@@`ABpD@zB?nAB`C@bB@fAAt@AlA"},
Steps: nil,
TransitDetails: (*maps.TransitDetails)(nil),
TravelMode: "DRIVING",
},
&maps.Step{
HTMLInstructions: "Turn <b>right</b> to merge onto <b>I-95 N</b> toward <b>W Palm Beach</b>",
Distance: maps.Distance{HumanReadable:"4.4 mi", Meters:7063},
Duration: 277000000000,
StartLocation: maps.LatLng{Lat:26.011037, Lng:-80.16587369999999},
EndLocation: maps.LatLng{Lat:26.0732058, Lng:-80.1671851},
Polyline: maps.Polyline{Points:"_hw}CtkhhNKVCHEJGJCBEBEBIBQDkBB_BJq@DkBR_Ff@_CT[DM@IBGFKJy@FyAFuAB_CD_B@U@cCBE?A?}BByQLqBA{BGuBQeBQyAQo@KoBc@aBa@sA]iHyBa@MoA[wBm@g@K_Ds@cB]aB[eB[qAScBU{BWMCWCsBWg@G}Ks@cHe@aQkA{CUeCOyCSsE[wDW{CSsKu@qAIEA_@COAA?gBM_@Co@E[Ck@CUAs@E]AWA]A]?q@AU?a@?O?Y?kA?s@Bk@@o@Bm@@wEPcKZc@@w@BiAFi@Bq@Dw@Hk@FoBRw@JSD[DmAR}@P}Dt@oCh@yFdAgB''A@g@HIBA?eCd@cDn@y@Ns@NiB''_ARu@LaBZyDt@qCh@}Bf@oDx@sBf@}A`@qAZcBb@aBb@qEpA"},
Steps: nil,
TransitDetails: (*maps.TransitDetails)(nil),
TravelMode: "DRIVING",
},
&maps.Step{
HTMLInstructions: "Take exit <b>24</b> for <b>Interstate 595</b> toward <b>Port Everglades</b>/<b>Ft Laud-Hlwd</b>/<b>International Airport</b>",
Distance: maps.Distance{HumanReadable:"0.3 mi", Meters:416},
Duration: 17000000000,
StartLocation: maps.LatLng{Lat:26.0732058, Lng:-80.1671851},
EndLocation: maps.LatLng{Lat:26.0768262, Lng:-80.1680758},
Polyline: maps.Polyline{Points:"qlc~C|shhNKIAAAAA?C?E?E?A?MBc@H_@FqB^uAVoAT{@Na@F[Hi@HYFyAXm@L"},
Steps: nil,
TransitDetails: (*maps.TransitDetails)(nil),
TravelMode: "DRIVING",
},
&maps.Step{
HTMLInstructions: "Keep <b>left</b> at the fork, follow signs for <b>I-595 W</b>/<b>I-75</b>/<b>Florida's Turnpike</b> and merge onto <b>I-595 W</b>",
Distance: maps.Distance{HumanReadable:"4.4 mi", Meters:7161},
Duration: 255000000000,
StartLocation: maps.LatLng{Lat:26.0768262, Lng:-80.1680758},
EndLocation: maps.LatLng{Lat:26.0947648, Lng:-80.2317655},
Polyline: maps.Polyline{Points:"ecd~CnyhhN[H[D_@Dm@FWBMBU@u@D_@@]@q@@W?]?MAU?[AYAQAe@C_@CWAk@CWAUAUAM?e@?W@Q@WBSBQBI@KBMBUHOFSFWNMHC@A@MHa@ZIFGF]`@IN[f@_@|@IVGT?BEREPCRALAHAF?BAB?FAJ?RAL?F?''?F?D?N?RDlABn@Bx@@r@@t@@t@AV?h@A`@Ap@Cb@AZ?N?LATCh@CZ?@?@?@@@?@?@@BDFMhBIlAKdBGt@[rEe@zHAFk@vIE`@C`@UlDSbD?FMbECh@A|@C|A?`ACtEDxLD~PBvFDbE@vB?tF?xB@z@ClA?X?@?DG|BGx@IjAGx@Er@MtAMlAMdA[rBQhAUjA[zAWfA[vAYbAc@zAkAtCKXSj@wAhDiC`GiBdE_@|@]x@s@jBs@lBsAnDoAhEw@vCe@xB{@rD[nAsDjS]hBOn@e@~Bc@zBo@rCUpASfAu@fFUjBIj@MhAKp@S|ASzAS`BIv@]nCMbA_@bCQhAAF?FO~@y@zFeAbHyAtJ"},
Steps: nil,
TransitDetails: (*maps.TransitDetails)(nil),
TravelMode: "DRIVING",
},
&maps.Step{
HTMLInstructions: "Take exit <b>6</b> toward <b>FL-817</b>/<b>University Dr</b>",
Distance: maps.Distance{HumanReadable:"0.4 mi", Meters:566},
Duration: 20000000000,
StartLocation: maps.LatLng{Lat:26.0947648, Lng:-80.2317655},
EndLocation: maps.LatLng{Lat:26.0963976, Lng:-80.2371076},
Polyline: maps.Polyline{Points:"gsg~CpguhNM''Ot@qBfKs@tD{@nEKd@S|@Id@Kj@?@ABABMH"},
Steps: nil,
TransitDetails: (*maps.TransitDetails)(nil),
TravelMode: "DRIVING",
},
&maps.Step{
HTMLInstructions: "Merge onto <b>FL-84 W</b>",
Distance: maps.Distance{HumanReadable:"0.8 mi", Meters:1365},
Duration: 96000000000,
StartLocation: maps.LatLng{Lat:26.0963976, Lng:-80.2371076},
EndLocation: maps.LatLng{Lat:26.0994367, Lng:-80.25034819999999},
Polyline: maps.Polyline{Points:"o}g~C|hvhNq@~EG`@_@`C_@jCWrBc@dDi@zDyAnJUvAM|@WnBMz@I|@OlAQ|AWrBQ|AKv@SxAWzASpAUnAYpAI`@"},
Steps: nil,
TransitDetails: (*maps.TransitDetails)(nil),
TravelMode: "DRIVING",
},
&maps.Step{
HTMLInstructions: "Turn <b>left</b> onto <b>S University Dr</b>",
Distance: maps.Distance{HumanReadable:"1.7 mi", Meters:2808},
Duration: 279000000000,
StartLocation: maps.LatLng{Lat:26.0994367, Lng:-80.25034819999999},
EndLocation: maps.LatLng{Lat:26.07466, Lng:-80.25254079999999},
Polyline: maps.Polyline{Points:"oph~Ct{xhNKf@t@ND@h@Hd@JRBD@bBZfANl@Jx@JtALr@HjBLd@@pBJR@~BDT?z@AhBAt@A`CCfAArAC~@AfAAfBETA~GIlBCvHK|EGbFIr@AvDGR?jB?dC?N?pCDpCLl@FlBRPBl@Fh@HxCf@hGpAn@NzB`@VBx@LtAN~@Ht@FrAJ"},
Steps: nil,
TransitDetails: (*maps.TransitDetails)(nil),
TravelMode: "DRIVING",
},
&maps.Step{
HTMLInstructions: "Make a <b>U-turn</b><div style='"font-size:0.9em'">Destination will be on the left</div>",
Distance: maps.Distance{HumanReadable:"0.2 mi", Meters:242},
Duration: 38000000000,
StartLocation: maps.LatLng{Lat:26.07466, Lng:-80.25254079999999},
EndLocation: maps.LatLng{Lat:26.0765145, Lng:-80.25211829999999},
Polyline: maps.Polyline{Points:"suc~CjiyhN@i@g@EwAIC?sAMYCm@Iy@M[E@T"},
Steps: nil,
TransitDetails: (*maps.TransitDetails)(nil),
TravelMode: "DRIVING",
},
},
Distance: maps.Distance{HumanReadable:"13.4 mi", Meters:21510},
Duration: 1243000000000,
DurationInTraffic: 0,
ArrivalTime: time.Time{},
DepartureTime: time.Time{},
StartLocation: maps.LatLng{Lat:26.0112983, Lng:-80.1494921},
EndLocation: maps.LatLng{Lat:26.0765145, Lng:-80.25211829999999},
StartAddress: "Hollywood, FL, USA",
EndAddress: "Davie, FL, USA",
},
},
WaypointOrder: {},
OverviewPolyline: maps.Polyline{Points:"siw}CheehNCwAAi@U??|ABpAJVNtVHtHDxEH~FGJAL?PEXGJSNUD]N_@XY''Ub@Od@Ih@Ch@Fp@Tz@R^t@p@''P`@JXRJPDVDdFH~NBjDCbC]x@YNQDkBBqCPgNvAWDSRsCNuEH_GF_CByQLqBA{BGuBQ_Ec@_Do@uD_AkIgCgEiAgE_AeEy@wDo@_Fm@yC_@eM{@eZqBoSuAqZsBsE[sCMeCEaB?{EHmTp@}ETkGp@{Dp@oTbEmMdCaIzAkI~AmH`BgKhCsHtBMKMAy@L{M`C}Dx@aCVyBLeCByAEoBKoBI}ABgAL_AX}@b@{@n@e@h@e@v@i@tAGXQfACTEfBDvBJrEAxCG`CInBBHDFMhBUrDkAlQkAhQSjDQlFIrLJx^HzLBbPChBGbCQdCMlB[bDi@xDg@tCs@bDu@zCc@zAkAtC_@dAkJnTyEbMgC`JaBlH[nAsDjSm@xCoC`NiAnH_@vCaAtHiAlJs@|EiAzH_DxS]rAeD|PeBxIOt@MHq@~Eg@bDeC`RuCtRy@dHiAbJk@lDo@`DUhAz@PhBZjDj@fBVhCVpCNdCLtCD|IIbHIjOUlX_@jEGpF?`DDpCLl@F~BVvAPxCf@hGpAjDp@pAPtCXhCR@i@g@E{AImBQgBW[E@T"},
Bounds: maps.LatLngBounds{
NorthEast: maps.LatLng{Lat:26.0994988, Lng:-80.14883689999999},
SouthWest: maps.LatLng{Lat:26.0110222, Lng:-80.25254079999999},
},
Copyrights: "Map data ©2016 Google",
Warnings: {},
},
}
DirectionsResult
对象,它通过DirectionsRendererOptions
直接传递给您询问的DirectionsRenderer()
构造函数。
如果您试图将其封送至Go,则可以使用相同的结构将其封送给正在寻找DirectionsResult
对象的消费者。
相关文章:
- ng映射方向备选方案
- 如何将getJson的响应保存在全局变量中
- 如何使用Spring MVC将Facebook返回的响应数据保存在Java类中
- RubyonRails——构建交互式接口应该朝哪个方向发展
- 需要帮助谷歌地图方向面板在FancyBox中显示
- 使用angularjs向浏览器发送servlet响应(下载功能)
- MockJax没有在JavaScript应用程序中发送对我AJAX请求的响应
- 不再使用innerHTML进行AJAX响应.(代码未得到响应)
- 为什么可以't我使用了AJAX响应的一部分
- 响应动画手风琴不工作
- 在D3.js中,有没有任何方法可以将x和y方向上的滚动事件绑定到平移svg
- 如何从SeleniumWebdriver获取异步Javascript响应
- 如何在谷歌地图服务的Go客户端中使用方向响应
- 弹性滑块方向箭头响应
- 谷歌地图v3方向渲染器重新绘制响应
- 获取或填充自定义变量与谷歌地图方向的响应
- Brightcove视频对移动设备上的方向变化没有响应
- Chart.js -设备方向改变时响应性不正确
- 多个谷歌地图方向请求返回所有请求的最后响应
- 当页面方向改变时响应