【问题标题】:How to get Google Maps Public Transit Directions by HTTP server-side request如何通过 HTTP 服务器端请求获取 Google Maps 公共交通路线
【发布时间】:2010-04-22 09:20:41
【问题描述】:

我使用这样的网址:

http://maps.google.com/?saddr=546%206th%20Avenue,%20New%20York,%20NY%2010011%20(Sixth%20Avenue,%20New%20York)&daddr=W%20103rd%20St,%20New%20York,%20NY%20&dirflg=r

但它返回完整的 html 页面。有人知道如何以 json 或 xml 或任何可解析的格式获取此类信息吗?

我需要公共交通。

【问题讨论】:

标签: google-maps driving-directions


【解决方案1】:

您只需在网址末尾添加&output=json

【讨论】:

  • xml 呢?当我执行 output=xml 或 output=kml 时,保存的文件为空白 :(
  • xml/kml 似乎不起作用。我想只有 json 可用。不是为您的案例解析 json 的选项?
  • 即使使用 json,url 似乎也没有为不同的旅行模式提供方向,只有驾驶。有人可以发布其他旅行方式的网址吗?
  • 使用此方法未记录在案,因此 a) 可能会损坏 b) 可能违反地图使用条款
  • 您可以通过更改 dirflg= 参数来更改传输选项。据我所知,dirflg=w == 步行 - dirflg=c == 驾驶(汽车)- dirflg=r == 公共交通(可能代表铁路?)和 dirflg=b == 自行车路线
【解决方案2】:

我想稍微扩展一下 Mathias 的答案。

  1. 目前没有官方的 Google Transit API。 Transit 由机构提供,大多数 Transit 不是公共的。因此,Google 不允许将它们作为 API 打开。

  2. 您可以尝试使用您的链接+“&output=json”来使用“非官方”数据。

  3. 但是,结果将不是有效的 JSON。相反,这是可以轻松转换为 JavaScript 对象的东西。 (区别在于:属性名称周围没有引号, 字符串未正确编码等)

  4. 假设你得到了这个 JavaScript 对象。但是,它不会让您轻松获得结构化的路线详细信息。对象的属性包含路线点坐标,但没有描述。唯一可以找到描述的地方是 'panel' 属性,它包含一段 HTML 文本(您可以在 my blog post 中找到指向 HTML 示例的链接)

  5. 因此,您必须将此 HTML 转换为 XML (X-HTML),然后构建此 XML 的解析器以获取旅行的基本数据。

对我来说似乎有点矫枉过正。请记住,“非官方”API 将来可能会发生变化,包括“面板”HTML 结构的细微变化,这会杀死您的解析器。

@MathiasLin,你是如何克服这个问题的?

【讨论】:

  • 回答您的问题,尽管有点晚了:我们已经使用了 output=xml(不是 json)的方法并解析了 xml,效果很好。如果“非官方”API 将来发生变化,我们只需推送另一个 apk 更新即可。
  • @MathiasLin,我理解正确吗, output=xml 曾经可以工作,但现在不行了?你不再使用谷歌交通“API”了吗?
  • 未使用过境 API;该项目于 2010 年完成,但已停止,所以不确定我提到的方法是否仍然有效,但在 2010 年它工作正常。
  • google transit api 的可用性有更新吗?
  • @sachinr 是的,它从 2012 年 8 月开始提供。请参阅此处的链接:mikeshilkov.wordpress.com/2012/08/14/…
【解决方案3】:

Google Maps Javascript v3 和 Directions Web 服务现在具有以下功能: http://googlegeodevelopers.blogspot.in/2012/06/public-transit-routing-and-layer-now.html

【讨论】:

    【解决方案4】:

    重新选择公共交通工具 - 现在似乎默认为公共交通工具(至少在我使用它时)。

    将最后一个 URL 参数 dirflg=r 更改为 dirflg=w 会将方向切换到步行模式。

    加看:

    Walking, bicycle and public transport directions with time required in each mode , iPhone

    有关参数的更多详细信息。

    【讨论】:

      【解决方案5】:

      谷歌方向API响应为HTML,JSON格式请查看https://developers.google.com/maps/documentation/javascript/directions?hl=lv

      & section 'DirectionsResult 对象'

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-02-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多