谷歌地图 URL 阻止航点重新排序
Posted
技术标签:
【中文标题】谷歌地图 URL 阻止航点重新排序【英文标题】:Google Maps URL prevent waypoint reorder 【发布时间】:2015-02-27 16:21:44 【问题描述】:问题: *** 上有一些关于构建 google maps url 以在浏览器中打开和显示路线的答案。参数解释以here为例。
现在我有以下情况。我的起始地址和目的地地址是相同的,并且它们之间是一些航路点。路线是汽车行驶。网址如下:
https://www.google.ch/maps?saddr=Bern&daddr=Bern+to:Paris+to:Berlin+to:Rome+to:&dirflg=d
如果您点击这些链接,您将看到 google 重新排列了整个路线的点。首先是起点,然后是终点,然后是所有航点。而不是开始 -> 航点 -> 结束。发生这种重新排序是因为(并且仅当)起始地址和目标地址相同。
有人知道防止这种重新排序的方法(或参数)吗?谢谢;)
可能的解决方案或修改后的问题: 如果有另一种(官方记录的)方式来构建 URL,问题就可以解决。如果您单击上面的链接并手动将第二个 Bern(结束地址)拖到末尾并执行请求,那么您会看到以下格式的新 URL:
https://www.google.ch/maps/dir/Bern/Paris,+Frankreich/Berlin,+Deutschland/Rom,+Italien/Bern(...剪切数据=等)
此 URL 将是我问题的答案,但我不知道如何影响例如出行方式(汽车、步行、公交、自行车)。此 URL 格式是否记录在某处?
【问题讨论】:
【参考方案1】:感谢geocodezip的例子,我意识到我在url中犯的错误。
以下不起作用: https://www.google.ch/maps?saddr=Bern&daddr=Bern+to:Paris+to:Berlin+to:Rome&dirflg=d
以下作品: https://www.google.ch/maps?saddr=Bern&daddr=Paris+to:Berlin+to:Rome+to:Bern&dirflg=d
我将saddr = 源地址、daddr = 目标地址和+to 误解为航点。但实际上,daddr 必须是路线中的第二个点。而路线的尽头是最后一个+to部分。
【讨论】:
【参考方案2】:这些参数适用于“旧”谷歌地图。新的谷歌地图是不同的。现在有用于创建嵌入式地图的文档化 API:
Google Maps Embed API
以下网址参数是必需的:
origin 定义显示方向的起点。该值可以是地名或地址。该字符串应该是 URL 转义的,因此“City Hall, New York, NY”之类的地址应该转换为 City+Hall,New+York,NY。 (转义空格时,Google Maps Embed API 支持 + 和 %20。) destination 定义方向的终点。以下 URL 参数是可选的:
waypoints 指定一个或多个中间位置,用于在起点和终点之间路由路线。可以通过使用竖线字符 (|) 来指定多个航路点来分隔地点(例如柏林、德国|巴黎、法国)。您最多可以指定 20 个航点。 mode 定义了出行方式。选项包括驾车、步行(首选人行道和人行道,如果可用)、骑自行车(通过自行车道和首选街道(如果可用)、公交或飞行。如果未指定模式,Embed API 将显示与指定路由最相关的一种或多种模式。 avoid 告诉 Google 地图避开收费站、渡轮和/或高速公路。使用竖线字符分隔多个值(例如,避免=tolls|highways)。请注意,这并不排除包含受限功能的路线;它只是将结果偏向更有利的路线。 units 在结果中显示距离时指定公制或英制单位。如果未指定单位,则查询的来源国家/地区将确定要使用的单位。Your example using the Embed API
【讨论】:
我已经能够使用 Google Maps javascript API V3 嵌入地图。我真的很想建立一个 URL,因为只有这样才允许在浏览器中打开一条路线,允许用户使用他知道的当前标准谷歌地图全屏用户界面来操纵路线。当您只是查看路线时,我认为嵌入地图是可以的。但是你的例子向我展示了我犯的错误:)!您的示例中“更多选项”后面的链接显示了有效的网址。看起来这个嵌入 API 使用的是旧格式。以上是关于谷歌地图 URL 阻止航点重新排序的主要内容,如果未能解决你的问题,请参考以下文章