46

特定の場所から特定の距離内にあるすべての近くの公共交通機関の情報を取得する必要があります。公共交通機関の種類は、バス、電車などです。

これが私が意味したことです:

Googleマップを使用して「ある場所の近くの停留所(例:ブギスストリートシンガポール)」を照会すると、近くにある必要なすべての停留所が返されます。写真のように。しかし、私はそれらの詳細を引き出すためにそのAPIが必要です。(写真のようにバスサービス番号、バス停IDなど)。しかし、私は何も見つかりませんでした。

バスのりば

これが私が試したことです

  1. Google Map Neighborhood Place APIを使用して、transit_station、bus_station、train_stationなど のタイプの場所を検索してみました。しかし、それらはすべてゼロ結果を返します。このAPIを使用して、近くの関心のある場所を検索することしかできませんでしたが、近くの交通機関を検索することはできませんでした。

  2. Google Transit APIも確認しましたが、トランジットデータをGoogleに挿入するためのAPIは見つかりましたが、抽出するためのAPIは見つかりませんでした。GoogleはまだトランジットAPIを公開していないと思います。


追加情報

Gothere.sgのサイトをチェックしました。そして、どのように混乱しましたか?彼らは近くのトランジットを検出することができたからです。それは彼らが「From-To」の方向を指定しているからです。

近くのトランジットの検出に関する非常によく似た質問を読みました。おそらく、GoogleAPIを使用する場合はまだ不可能です。

しかし、私にとって不可能なことは何もありません

ラストリゾート

最後の手段として、プロバイダーであるpublictransport.sgにも確認します。APIをハックします。そして、それが私に何らかの調整のある停留所を提供できることを知りました。しかし、それはグーグルマップで見つけた近くのAPIを欠いています。

したがって、現時点で考えられる回避策の1つは、この場合はプロバイダーを使用することです。これは、ストップIDとその座標を提供するpublictransport.sgでした。これを行うには、まず、Google GeoCoding APIを使用してロケーション名を座標に変換する必要があります。次に、検索した座標をプロバイダーが持つすべてのステーション座標と比較して、近くのステーションを見つけるための独自の近くの計算を作成する必要があります。

今、それは私にとっては可能ですが、非常に苦痛です:-)


質問に戻る:

特定の場所からすべての停留所データを取得する方法はありますか(Google Maps APIまたはその他のAPIを使用)?どうやってそれをしましたか?


ありがとう

少なくとも私の長い質問を読んでくれてありがとう。私はあなたからの助けに感謝します。前もって感謝します :-)

4

3 に答える 3

28

ええと、places-API を使用して最寄りの交通機関を見つけることができます。指定された場所では問題なく機能します。

パラメータを使用してリクエストを実行するだけです:

  • location ( latlng-指定された場所のオブジェクト)
  • radius(メートル単位で検索する半径)
  • types(有効な型の配列、例['bus_station','subway_station'])

フィドルをチェックアウト: http://jsfiddle.net/doktormolle/aZrvs/

詳細(バスサービス番号、バス停ID)を取得するには、今のところ良い考えがありません。

maps.google.com のデータは AJAX を使用して取得する方法があるはずなので、リソースがあります。しかし、これらの結果を取得するためのパブリック API がない限り、このリソースを使用することは合法ではありません。

于 2012-02-19T14:00:16.517 に答える
0

@Dr.Molle: が言ったように、google-places-api の詳細を取得した後でも、すべてのバス サービス番号、バス停 ID (駅名) を列挙できます。

detail['result']['url']のWebページを開き、バスIDリストの文字列をXPathします。

以下は、ある場所 (緯度、経度) 周辺の台北のバス情報を取得する例です。実装の詳細については、https://github.com/MikimotoH/gisTools/blob/master/google_place.pyを参照してください。

places = get_web_json(
    'https://maps.googleapis.com/maps/api/place/nearbysearch/json?' +
    'key=%s&location=%f,%f' % (apikey, lat, lng) +
    '&rankby=distance&language=zh-TW&types=bus_station')
if places['status'] == 'OK':
    for result in places['results']:
        placeid = result['place_id']
        detail = get_web_json(
            'https://maps.googleapis.com/maps/api/place/details/' +
            'json?key=%s&placeid=%s' % (apikey, placeid) +
            '&language=zh-TW')
        station = detail['result']['name']
        loc = detail['result']['geometry']['location']
        buspage = get_webpage(detail['result']['url'])
        tree = lxml.html.document_fromstring(buspage)
        bus_elm = tree.xpath("/html/body/div[1]/div/div[4]/div[4]/div/div/div[2]/div/div[2]/div[1]/div[2]/div/div/div[2]/div/table/tr/td")[0]
        buses = list(filter(lambda s: len(s.strip()) > 0,
                            bus_elm.text_content().strip().split()))
        yield (station, float(loc['lat']), float(loc['lat']), buses)
于 2014-08-11T04:30:12.953 に答える
0

&output=json を最初のクエリ (http://maps.google.com/maps?q=transit%20stop%20near%20New%20Bugis%20Street%20Singapore&output=json) に追加することは、この情報を取得する合法的な方法ではありませんか?

于 2012-09-16T21:24:42.047 に答える