检测距离给定位置最近的公交站点
我需要从一个给定的位置一定距离内获得所有附近的公共交通信息。 公共交通的types可以是巴士,火车等。
这是我的意思:
如果我使用Google地图查询“位置附近的转机站(例如武吉士街新加坡)” ,那么它会将我想要的所有附近的转机站返回给我们。 就像图中所示的一样。 但我需要它的API来获取这些细节。 (如图中所示的巴士服务号,巴士站ID等)。 但是我找不到任何东西。
这是我试过的
-
我曾尝试使用Google Map Nearby Place API来searchtransit_station,bus_station,train_station等types的地点 。 但他们都返回零结果。 我只能使用此API来search附近的景点,但不能在附近过境。
-
我也检查了Google Transit API ,但是我只findAPI来将转接数据插入Google,但是不能将其提取出来。 我认为Google还没有公布过境API。
附加信息
我已经检查网站Gothere.sg 。 又困惑如何? 因为他们能够检测附近的过境。 仅仅是因为他们指定了“从 – 到”的方向。
我读了一个非常类似的问题检测附近的过境 。 如果我们使用Google API,也许还不可能。
但是对我来说没有什么不可能的
最后一招
作为最后的手段,我也检查提供商, publictransport.sg 。 我使用API进行破解。 发现它可以为我提供一些坐标的中转站。 但它缺less在Google地图上find的附近的API。
因此,我现在可以想到的一个解决方法是在这种情况下使用提供商publictransport.sg ,它给了我停止ID和它的坐标。 为此,首先,我必须使用Google GeoCoding API将位置名称转换为坐标,然后通过将search到的坐标与提供者所有的站点坐标进行比较来创build我自己的附近计算来查找附近的站点。
现在,对我来说是可能的,但是非常痛苦:-)
回到问题:
有没有办法从给定的位置检索所有的中转站数据(使用Google Maps API或其他任何API)? 你是怎么做到的?
谢谢
至less感谢您阅读我冗长的问题。 我感谢你的帮助。 提前致谢 :-)
那么,你可以使用API的地方find最近的公交站点,对于我给定的位置,它工作正常。
只要用参数做一个请求:
- 位置(
latlng
– 给定位置的对象) - 半径(以米为单位search的半径)
- types(有效types的数组,例如
['bus_station','subway_station']
)
结帐小提琴: http : //jsfiddle.net/doktormolle/aZrvs/
为了检索更多的细节(巴士服务号码,巴士站ID),我现在没有什么好主意。
应该有一种方法,maps.google.com上的这些数据将通过使用AJAX检索,所以有一个资源。 但只要没有公共的API来获取这些结果,使用这个资源将是不合法的。
在获得google-places-api详细信息之后,您仍然可以列举所有巴士服务号码,巴士站ID(站名),如@ Dr.Molle所说:
打开详细信息['result'] ['url']的网页,然后XPath显示总线ID列表的string。
以下是一个例子,让台北的巴士信息围绕一个位置(经度,纬度)。 更详细的实现请参阅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)
- Google Maps API v3中的OVER_QUERY_LIMIT:如何暂停/延迟Javascript以减慢速度?
- Google Maps V3 – 如何计算给定界限的缩放级别
- 在Google地图V3上旋转图片/标记图片
- 通过单击button禁用缩放在Google地图中的拖动
- 只有使用AJAX时,Google Maps API才会抛出“Uncaught ReferenceError:google未定义”
- Google Map API v3〜只需closures一个infowindow?
- 什么是销毁地图实例的正确方法?
- Google Maps API获取公交路线
- Google Map API v3 – 设置边界和中心