Обнаружение ближайшей остановки перехода из данного места
Мне нужно получить всю информацию о ближайшем общественном транспорте на определенном расстоянии от данного места. Тип общественного транспорта может быть либо автобусом, поездом, и т.д.
Вот что я имел в виду:
Если я использую Google Map для запроса "Transit Stop около местоположения (например, Bugis Street Singapore)" , тогда он вернет нас всех что я хочу. Как показано на картинке. Но мне нужен его API, чтобы получить эти детали. (например, автобусное сообщение №, идентификатор остановки автобуса и т.д., как показано на рисунке). Но я не мог найти.
![Bus Stop]()
Вот что я пробовал
Дополнительная информация
Я проверил сайт Gothere.sg. И путают Как? потому что они могут обнаружить ближайший транзит. Это только потому, что они указывают направление "От-до".
Я прочитал довольно похожий вопрос об обнаружении соседнего маршрута. Возможно, пока невозможно использовать API Google.
Но для меня ничего невозможного
Последний курорт
В качестве последней инстанции я также проконсультирую с провайдером publictransport.sg. Я взламываю API. И выяснил, что он может предоставить мне транзитную остановку с некоторой координатой. Но ему не хватает API, который найден на Google Map.
Итак, одним обходным решением, которое я мог придумать на данный момент, является использование провайдера в этом случае, это publictransport.sg, которые дают мне Stop ID и его координаты. Для этого во-первых, мне нужно перевести имя местоположения с помощью Google GeoCoding API в Координатор, тогда мне нужно создать свой собственный подсчет, чтобы найти ближайшую станцию, сравнив найденный Координат со всей координатой станции, которую имеет поставщик.
Теперь это возможно для меня, но очень болезненно: -)
Вернуться к вопросу:
Есть ли способ получить все данные транзитной остановки из заданного местоположения (используя API Карт Google или любой другой API)? и как вы это сделали?
Спасибо
По крайней мере, спасибо за чтение моего длинного вопроса. Я ценю любую помощь от вас. Заранее спасибо: -)
Ответы
Ответ 1
Ну, вы можете использовать места-API для поиска ближайших транзитных остановок, он отлично подходит для меня для данного местоположения.
Просто выполните запрос с параметрами:
- location (
latlng
-объект данного местоположения)
- радиус (радиус для поиска в метрах)
- (массив допустимых типов, например
['bus_station','subway_station']
)
Оформить скрипт: http://jsfiddle.net/doktormolle/aZrvs/
Для получения дополнительной информации (услуга автобуса №, идентификатор остановки автобуса) У меня сейчас нет хорошей идеи.
Должен быть способ, эти данные на maps.google.com будут получены с помощью AJAX, так что есть ressource. Но до тех пор, пока нет публичного API для получения этих результатов, было бы нецелесообразно использовать этот ресурс.
Ответ 2
Вы все еще можете перечислить все номер службы шины, идентификатор шины (имена станций) после получения данных google-places-api, как @Dr.Molle: said.
Откройте веб-страницу детали ['result'] ['url'], а затем 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)
Ответ 3
Добавление & output = json к вашему первоначальному запросу (http://maps.google.com/maps?q=transit%20stop%20near%20New%20Bugis%20Street%20Singapore&output=json), не является законный способ получить эту информацию?