Получить ближайшее место к местоположению Geopy - PullRequest
0 голосов
/ 20 апреля 2020

Я работаю над созданием бота-телеграммы, который скажет вам, где находится ближайшая к вам автобусная остановка. Я мог бы получить свою позицию по местоположению телеграммы. Теперь у меня есть список автобусных остановок с их координатами 'fer1 [1,2]' и 'fer2 [1,2]'. Я хотел бы найти ближайший пункт с Geo.py и распечатать название ближайшей автобусной остановки 'fer1 [0]' и 'fer2 [0]'.

from geopy.geocoders import Nominatim
from geopy import distance
import json
import time
from pprint import pprint
import telepot
from telepot.loop import MessageLoop
import telepot.namedtuple
bot = telepot.Bot("token")
#lista = ["New York","Los #Angeles","Miami","Toronto","Berlin","Rome","Ciao"]
#seq = iter(lista)
#reqloc = keyboard = {"text": "Utilizza la geolocalizzazione", #"request_location": True}
#keyboard = {"keyboard": [[reqloc]]+[[{"text": i} for i in pair] for #pair in zip(seq)]}



def handle(msg):
    content_type, chat_type, chat_id = telepot.glance(msg)
    print(content_type, chat_type, chat_id)
    if content_type == "text":
        bot.sendMessage(chat_id, msg["text"], reply_markup=keyboard)
    if content_type == "location":
        fer1 = ["Via Fratelli Varalli","45.792113","8.277187"]
        fer2 = ["Corso Vercelli (ospedale)","45.608498","8.371962"]
        fer = [fer1,fer2]
        nom = Nominatim(user_agent="my-application")
        co_la = msg['location']['latitude']
        co_lo = msg['location']['longitude']
        lo_li = (float(co_la),float(co_lo))
        #print(lo_li)
        for i in fer:
            lol = (float(i[1]),float(i[2]))
            print(distance.distance(lo_li,lol).km)
...