【问题标题】:Google Directions API谷歌路线 API
【发布时间】:2013-07-30 07:00:49
【问题描述】:
在 JSON 输出中,“步骤”中有一个“机动”字段。在这个“左转”、“右转”、“微左转”等。例子是here
在哪里可以找到“机动”字段的定义以及可能值的列表?没有相关说明here
提前致谢
【问题讨论】:
标签:
directions
google-directions-api
【解决方案1】:
这是懒人的视觉效果:)
不敢相信 Google 还没有记录这一点...
maneuver 包含为当前步骤采取的动作(左转、合并、直行等)。
此字段用于确定要显示哪个图标,并且可以包含以下值之一:
【解决方案2】:
UPD
信不信由你,但最终他们记录了它!请see here。
根据this gmaps-api-issue我认为google不急于记录这部分api:(
但我至少可以通过以下方式帮助解决这个问题……“机动”字段是对步骤操作的简短描述。我想谷歌的脚本使用它来将 css 类应用于direction panel。我注意到每个步骤的图标取决于 css 类“.adp-{maneuver_name}”。面板的 Css 文件包含 18 个带有该掩码的类,我已经提取了操作列表:
- 急转左
- 右转
- 右转
- 合并
- 回旋处左
- 右环岛
- 左转
- 稍微左转
- 左转
- 右斜坡
- 右转
- 右叉
- 直
- 左叉
- 轮渡火车
- 右转
- 左斜坡
- 渡轮
在工作期间,我发现了“maneuver”字段的两个附加值,它们没有 css 类:
我不能保证这个列表的完整性,但是我在我的项目中使用了这个列表并且它可以正常工作。
【解决方案3】:
当您使用路线服务时,谷歌地图会在您的 <head> 中注入一些 css
截至 2015 年 6 月,我的代码如下。谷歌似乎只下载显示路线所需的内容,因此,您的结果可能会有所不同。
底部的背景图片文件:
.adp-substep .adp-stepicon .adp-maneuver {
background-size: 19px 630px;
position: absolute;
left: 0;
width: 16px;
height: 16px
}
.adp-substep .adp-stepicon .adp-maneuver.adp-ferry {
background-position: 0 -614px
}
.adp-substep .adp-stepicon .adp-maneuver.adp-ferry-train {
background-position: 0 -566px
}
.adp-substep .adp-stepicon .adp-maneuver.adp-merge {
background-position: 0 -143px
}
.adp-substep .adp-stepicon .adp-maneuver.adp-straight {
background-position: 0 -534px
}
.adp-substep .adp-stepicon .adp-maneuver.adp-fork-left {
background-position: 0 -550px
}
.adp-substep .adp-stepicon .adp-maneuver.adp-ramp-left {
background-position: 0 -598px
}
.adp-substep .adp-stepicon .adp-maneuver.adp-roundabout-left {
background-position: 0 -197px
}
.adp-substep .adp-stepicon .adp-maneuver.adp-turn-left {
background-position: 0 -413px
}
.adp-substep .adp-stepicon .adp-maneuver.adp-turn-sharp-left {
background-position: 0 0
}
.adp-substep .adp-stepicon .adp-maneuver.adp-turn-slight-left {
background-position: 0 -378px
}
.adp-substep .adp-stepicon .adp-maneuver.adp-uturn-left {
background-position: 0 -305px
}
.adp-substep .adp-stepicon .adp-maneuver.adp-fork-right {
background-position: 0 -499px
}
.adp-substep .adp-stepicon .adp-maneuver.adp-ramp-right {
background-position: 0 -429px
}
.adp-substep .adp-stepicon .adp-maneuver.adp-roundabout-right {
background-position: 0 -232px
}
.adp-substep .adp-stepicon .adp-maneuver.adp-turn-right {
background-position: 0 -483px
}
.adp-substep .adp-stepicon .adp-maneuver.adp-turn-sharp-right {
background-position: 0 -582px
}
.adp-substep .adp-stepicon .adp-maneuver.adp-turn-slight-right {
background-position: 0 -51px
}
.adp-substep .adp-stepicon .adp-maneuver.adp-uturn-right {
background-position: 0 -35px
}
.adp-substep .adp-stepicon .adp-maneuver {
background-image: url(http://maps.gstatic.com/mapfiles/api-3/images/maneuvers.png);
}
【解决方案4】:
【讨论】:
-
虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
-
【解决方案5】:
看看他们的 SDK
https://github.com/googlemaps/google-maps-services-js/blob/master/src/common.ts 1132 行
export enum Maneuver {
turn_slight_left = "turn-slight-left",
turn_sharp_left = "turn-sharp-left",
uturn_left = "uturn-left",
turn_left = "turn-left",
turn_slight_right = "turn-slight-right",
turn_sharp_right = "turn-sharp-right",
uturn_right = "uturn-right",
turn_right = "turn-right",
straight = "straight",
ramp_left = "ramp-left",
ramp_right = "ramp-right",
merge = "merge",
fork_left = "fork-left",
fork_right = "fork-right",
ferry = "ferry",
ferry_train = "ferry-train",
roundabout_left = "roundabout-left",
roundabout_right = "roundabout-right"
}