Google Maps API - Variable Ziele je nach Zwischenzielen wählen
Verfasst: Dienstag 8. Februar 2022, 09:42
Hallo alle Zusammen,
ich habe ein Projekt, indem ich optimale Routen bestimmen soll. Dabei gibt es immer eine feste Startadresse, feste Zwischenziele und mehrere Endziele. Je nach den Zwischenzielen soll aus einer Liste von Zieladressen das nahgelegenste Ziel ausgewählt werden. Hat jemand eine Idee wie ich das realisieren kann?
Ich verwende ich die Directions API von Google Maps. Ich habe soweit ein Programm geschrieben, in dem ich die Startadresse und Zwischenziele eingeben kann. Jetzt soll wie gesagt zusätzlich aus einer Liste von Endzielen das nahegelegenste ausgewählt werden.
ich habe ein Projekt, indem ich optimale Routen bestimmen soll. Dabei gibt es immer eine feste Startadresse, feste Zwischenziele und mehrere Endziele. Je nach den Zwischenzielen soll aus einer Liste von Zieladressen das nahgelegenste Ziel ausgewählt werden. Hat jemand eine Idee wie ich das realisieren kann?
Ich verwende ich die Directions API von Google Maps. Ich habe soweit ein Programm geschrieben, in dem ich die Startadresse und Zwischenziele eingeben kann. Jetzt soll wie gesagt zusätzlich aus einer Liste von Endzielen das nahegelegenste ausgewählt werden.
Code: Alles auswählen
import gmaps
import gmaps.datasets
import requests
import urllib
gmaps.configure(api_key='Fooo')
url = "https://maps.googleapis.com/maps/api/geocode/json?address="
key = "&key=AIz..........."
end_destinations = ["Aachen, Germany", "Wolfenbüttel, Germany", "Salzburg, Austria", "Bremen, Germany", "Frankfurt, Germany"]
origin = input("Ihre Startadresse: ")#z.B. "Stresemannstraße 10, 31135 Hildesheim"
waypoints = []
while 1:
input_text = input("Ihre Ziel/e: ")
if input_text != "": #Sobald man ohne etwas einzugeben Enter drückt, wird die Route berechnet (while-Loop verlassen)
waypoints.append(input_text)
else:
break
adressen=[origin]
adressen.extend(waypoints)
locations = []
#In "Locations" wird in jedem Durchlauf eine Liste mit Längen- und Breitengrad der jeweiligen Adresse angehängt.
for adresse in adressen:
lat_and_lng = []
adresse = urllib.parse.quote_plus(adresse)
response = requests.get(url+adresse+key)
resp_json_payload = response.json()
location = resp_json_payload['results'][0]['geometry']['location']
lat_and_lng.append(location['lat'])
lat_and_lng.append(location['lng'])
locations.append(lat_and_lng)
#print(location)
#Pro Liste in der Liste "Locations" gibt es ein Paar aus Längen, und Breitengrad
route = gmaps.directions_layer(locations[0], locations[-1], waypoints = locations[1:-1], travel_mode='DRIVING', optimize_waypoints=True)
print(route)
#Die Route auf Karte visualisieren
fig = gmaps.figure()
fig.add_layer(route)
fig