Je dois obtenir toutes les informations de transport en commun à proximité à une certaine distance d'un lieu donné. Le type de transport en commun peut être un bus, un train, etc.
Si j'utilise Google Map pour interroger "Transit Stop près d'un lieu (par exemple, Bugis Street Singapore)" , il nous renverra tous les arrêts de transit à proximité que je souhaite. Comme celui montré dans l'image. Mais j'ai besoin de son API pour obtenir ces détails. (comme le numéro de service du bus, l’identifiant de l’arrêt du bus, etc. comme indiqué sur la photo). Mais je n'en ai trouvé aucun.
J'ai essayé d'utiliser l'API Google Map Nearby Place pour rechercher un lieu avec le type de transit_station, bus_station, train_station, etc. . Mais ils retournent tous zéro résultat. Je ne pouvais utiliser cette API que pour rechercher un lieu d'intérêt à proximité, mais pas le transport en commun à proximité.
J'ai également vérifié Google Transit API, mais je n'ai trouvé API que pour insérer des données de transit dans Google, mais pas pour les extraire. Je pense que Google n'a pas encore annoncé l'API de transit.
J'ai vérifier le site Gothere.sg . Et confus comment? parce qu'ils sont capables de détecter le transit à proximité. Est-ce seulement parce qu'ils spécifient la direction "From-To".
J'ai lu une question assez similaire sur Détecter le transit à proximité . Ce n'est peut-être pas encore possible si nous utilisons les API de Google.
Mais rien n'est impossible pour moi
En dernier recours, je vérifie également auprès du fournisseur, publictransport.sg . Je pirate avec l'API. Et j'ai découvert que cela pouvait me fournir un arrêt de transport en commun avec quelques coordonnées. Mais il manque une API à proximité qui se trouve sur Google Map.
Une solution de contournement à laquelle je pensais pour le moment consiste à utiliser le fournisseur dans ce cas-ci était publictransport.sg , qui me donne l’identifiant de l’arrêt et ses coordonnées. Pour ce faire, je dois d'abord traduire le nom de l'emplacement à l'aide de l'API Google GeoCoding en coordonnées, puis créer mon propre calcul à proximité pour trouver la station la plus proche en comparant la coordonnée recherchée à toutes les coordonnées de la station dont dispose le fournisseur.
Maintenant, c'est possible pour moi, mais très pénible :-)
Existe-t-il un moyen de récupérer toutes les données des arrêts de transport en commun à partir d'un emplacement donné (à l'aide de l'API Google Maps ou de toute autre API)? et comment as-tu fait ça?
Au moins merci d'avoir lu ma longue question. J'apprécie toute aide de votre part. Merci d'avance :-)
Eh bien, vous pouvez utiliser l’API-lieux pour trouver les arrêts de transport en commun les plus proches, cela fonctionne bien pour moi pour l’emplacement donné.
Il suffit de faire une demande avec les paramètres:
latlng
- object de la localisation donnée)['bus_station','subway_station']
)Commander le violon: http://jsfiddle.net/doktormolle/aZrvs/
Pour obtenir plus de détails (numéro de bus, identifiant de l'arrêt de bus), je n'ai pas encore de bonne idée.
Il devrait y avoir un moyen, les données sur maps.google.com seront récupérées en utilisant AJAX, il y a donc une ressource. Mais tant qu'il n'y a pas d'API publique pour récupérer ces résultats, il ne serait pas légal d'utiliser cette ressource.
Vous pouvez toujours énumérer tous les numéros de service de bus, ID d’arrêt de bus (noms de gare) après avoir obtenu les détails de google-places-api, comme @ Dr.Molle: dit.
Ouvrez la page Web de détail ['result'] ['url'], puis XPath la chaîne de la liste d'identifiants de bus.
Vous trouverez ci-dessous un exemple pour obtenir des informations sur les bus de Taipei autour d’un lieu (latitude, longitude). Plus de détails sur la mise en œuvre voir 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)