You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

关于通过Google API获取公交站点所属公交线路的技术咨询

获取公交站点停靠线路的步骤

嗨,刚好我之前做过类似的需求,给你一步步捋清楚怎么拿到这些线路数据:

  • 第一步:请求Place Details时必须指定对应字段
    你已经拿到了最近公交站点的Place ID对吧?接下来要给每个Place ID发起Place Details API请求,这里的关键是必须在fields参数里明确指定transit_details——因为Google Places API默认不会返回这么详细的交通数据,你得主动声明要这个字段。举个请求示例(把占位符换成你的实际数据):

    https://maps.googleapis.com/maps/api/place/details/json?place_id=YOUR_STOP_PLACE_ID&fields=name,transit_details&key=YOUR_API_KEY
    

    我额外加了name字段方便你对应站点,你可以根据需求添加地址等其他字段。

  • 第二步:从响应中提取线路信息
    拿到响应后,找到result.transit_details.lines这个数组,里面的每一个元素就是该站点停靠的一条公交线路。每个线路对象包含核心信息:

    • name/short_name:线路名称(比如“5路”或“M102”)
    • type:线路类型(比如BUSSUBWAYTRAIN
    • agencies:运营机构的名称、联系方式等信息
    • vehicle:车辆类型和图标链接(做UI展示时很实用)

    给你看个响应结构示例:

    "result": {
      "name": "Main St & 5th Ave",
      "transit_details": {
        "lines": [
          {
            "name": "Downtown Connector",
            "short_name": "DC-1",
            "type": "BUS",
            "agencies": [
              {
                "name": "Metro Transit",
                "phone": "555-1234"
              }
            ],
            "vehicle": {
              "type": "BUS",
              "icon": "https://maps.gstatic.com/mapfiles/transit/iw2/6/bus2.png"
            }
          },
          {
            "name": "Cross Town Express",
            "short_name": "CT-2",
            "type": "BUS",
            "agencies": [
              {
                "name": "Metro Transit",
                "phone": "555-1234"
              }
            ]
          }
        ]
      }
    }
    
  • 额外注意事项

    • 先确认你的API Key已经启用了Places API服务,并且有足够的配额,不然请求会直接报错。
    • 少数偏远或小型站点可能没有完整的线路数据,代码里记得做判断,比如lines数组为空时做默认处理。
    • 如果之后需要实时到站信息或线路完整走向,可能需要结合Google Transit的其他端点,但就你当前需求来说,Place Details的transit_details完全够用。

内容的提问来源于stack exchange,提问作者Victor Motogna

火山引擎 最新活动