2010-04-22 79 views
8

获得谷歌地图公交路线我用这样的网址,如:如何通过HTTP服务器端请求

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或任何可分析格式获取此类信息吗?

我需要公共交通。

+0

可能重复的[使用PHP计算驾驶方向?](http://stackoverflow.com/questions/1800510/calculate-driving-directions-using-php) – miguev 2016-07-07 10:17:15

回答

6

您只需将&output=json添加到网址的末尾即可。

+0

xml怎么办?当我做output = xml或output = kml时,保存的文件是空白的:( – c0d3Junk13 2011-12-25 14:01:18

+0

xml/kml似乎没有工作,我猜只有json可用,不是用于解析json的选项吗? – 2011-12-25 16:43:46

+0

是的,我也可以做json,谢谢:) – c0d3Junk13 2012-01-05 00:03:48

4

我想稍微扩展Mathias的答案。

  1. momemnt上没有官方Google Transit API。转运由机构提供,大部分转运不公开。因此,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,你是怎么克服这个的?

+0

回答你的问题,即使有点晚:我们已经用这种方法与输出= xml(不json)并解析了xml,这很好。如果'非官方'API将来会发生变化,我们只需简单地推一下apk的更新。 – 2012-07-24 14:51:53

+0

@MathiasLin,我理解正确,output = xml曾经工作,但它不再?你不使用谷歌中转“API”了吗? – Mikhail 2012-07-27 13:41:32

+0

没有使用过境API;该项目已于2010年完成,但已停止使用,因此不确定我提到的方法是否仍然有效,但在2010年时仍然有效。 – 2012-07-28 03:57:31