google-maps - übergeben - google maps url scheme




Karten-Routing, a la Google Maps? (6)

Ich war schon immer von Map Routing fasziniert, aber ich habe noch nie ein paar gute Tutorials für Anfänger (oder sogar Fortgeschrittene) gefunden. Hat jemand irgendwelche Hinweise, Hinweise usw.?

Update: Ich suche vor allem nach Hinweisen, wie ein Kartensystem implementiert wird (Datenstrukturen, Algorithmen usw.).


Werfen Sie einen Blick auf das offene Straßenkartenprojekt, um zu sehen, wie so etwas in einem wirklich kostenlosen Softwareprojekt angegangen wird, das nur von Nutzern bereitgestellte und lizenzierte Daten verwendet und ein Wiki mit Dingen enthält, die Sie interessant finden könnten .

Vor ein paar Jahren waren die involvierten Leute ziemlich locker und beantworteten viele Fragen, die ich hatte, also sehe ich keinen Grund, warum sie immer noch keine nette Gruppe sind.


Anstatt APIs zu jedem Karten-Service-Provider zu lernen (wie Gmaps, Ymaps api) Es ist gut, Mapstraction zu lernen

"Mapstraction ist eine Bibliothek, die eine gemeinsame API für verschiedene JavaScript-Mapping-APIs bereitstellt"

Ich würde vorschlagen, dass Sie zu der URL gehen und eine allgemeine API lernen. Es gibt auch eine Menge How-Tos.


Ich habe noch kein gutes Tutorial zum Routing gefunden, aber es gibt jede Menge Code zum Lesen:

Es gibt GPL-Routing-Anwendungen, die Openstreetmap-Daten verwenden, zB Gosmore, das unter Windows (+ mobile) und Linux funktioniert. Es gibt eine Reihe interessanter [Anwendungen, die dieselben Daten verwenden, aber gosmore hat einige coole Anwendungen, z . B. die Schnittstelle zu Websites .

Das größte Problem beim Routing sind schlechte Daten, und Sie erhalten nie genügend Daten. Also, wenn Sie es versuchen wollen, halten Sie Ihren Test sehr lokal, damit Sie die Daten besser kontrollieren können.


A * ist tatsächlich viel näher an Produktionsabbildungsalgorithmen. Es erfordert im Vergleich zum ursprünglichen Algorithmus von Dijikstra einiges weniger Exploration.


Aus meiner Erfahrung in diesem Bereich macht A * die Arbeit sehr gut. Es ist (wie oben erwähnt) schneller als der Algorithmus von Dijkstra, ist aber immer noch einfach genug für einen gewöhnlich kompetenten Programmierer zu implementieren und zu verstehen.

Der Aufbau des Streckennetzes ist der schwierigste Teil, aber das kann in eine Reihe einfacher Schritte zerlegt werden: alle Straßen erhalten; sortiere die Punkte in Reihenfolge; Gruppen von identischen Punkten auf verschiedenen Straßen zu Kreuzungen (Knoten) machen; Fügen Sie in beide Richtungen Bögen hinzu, an denen sich Knoten verbinden (oder nur in einer Richtung für eine Einbahnstraße).

Der A * -Algorithmus selbst ist in Wikipedia gut dokumentiert . Der Schlüssel zum Optimieren ist die Auswahl des besten Knotens aus der offenen Liste, für den Sie eine leistungsstarke Prioritätswarteschlange benötigen. Wenn Sie C ++ verwenden, können Sie den Adapter "STL priority_queue" verwenden.

Das Anpassen des Algorithmus, um verschiedene Teile des Netzwerks (z. B. Fußgänger, Auto, öffentliche Verkehrsmittel usw.) zu befahren, um Geschwindigkeit, Entfernung oder andere Kriterien zu bevorzugen, ist ziemlich einfach. Sie tun dies, indem Sie Filter schreiben, um zu steuern, welche Routensegmente beim Aufbau des Netzwerks verfügbar sind und welches Gewicht jedem zugewiesen ist.


Ein weiterer Gedanke kommt mir bezüglich der Kosten jedes Durchlaufs in den Sinn, würde aber die Zeit und die Verarbeitungsleistung erhöhen, die erforderlich sind, um zu berechnen.

Beispiel: Es gibt 3 Wege, die ich nehmen kann (wo ich lebe), um von A nach B zu gehen, laut GoogleMaps. Garmin-Einheiten bieten jeden dieser drei Pfade in der Quickest Routenberechnung an. Nachdem ich jede dieser Routen viele Male und durchschnittlich durchquert habe (offensichtlich gibt es Fehler in Abhängigkeit von der Tageszeit, der Menge an Koffein usw.), glaube ich, dass die Algorithmen die Anzahl der Kurven auf der Straße für eine hohe Genauigkeit berücksichtigen können. B. eine gerade Meile von 1 Meile ist schneller als eine 1 Meile Straße mit scharfen Kurven . Kein praktischer Vorschlag, aber sicherlich einer, mit dem ich die Ergebnisse meiner täglichen Arbeit verbessern kann.





gis