DE102016124474B4 - Navigations-anwendungsprogrammierungsschnittstelle zum unterbringen einer mehrfachwegpunkte-führung - Google Patents

Navigations-anwendungsprogrammierungsschnittstelle zum unterbringen einer mehrfachwegpunkte-führung Download PDF

Info

Publication number
DE102016124474B4
DE102016124474B4 DE102016124474.0A DE102016124474A DE102016124474B4 DE 102016124474 B4 DE102016124474 B4 DE 102016124474B4 DE 102016124474 A DE102016124474 A DE 102016124474A DE 102016124474 B4 DE102016124474 B4 DE 102016124474B4
Authority
DE
Germany
Prior art keywords
navigation
waypoint
route
instructions
operable
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE102016124474.0A
Other languages
English (en)
Other versions
DE102016124474A1 (de
Inventor
Benjamin Greenwood
Joseph Laurence Scarr
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of DE102016124474A1 publication Critical patent/DE102016124474A1/de
Application granted granted Critical
Publication of DE102016124474B4 publication Critical patent/DE102016124474B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/20Instruments for performing navigational calculations
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/26Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
    • G01C21/34Route searching; Route guidance
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/26Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
    • G01C21/34Route searching; Route guidance
    • G01C21/3453Special cost functions, i.e. other than distance or default speed limit of road segments
    • G01C21/3476Special cost functions, i.e. other than distance or default speed limit of road segments using point of interest [POI] information, e.g. a route passing visible POIs
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/26Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
    • G01C21/34Route searching; Route guidance
    • G01C21/36Input/output arrangements for on-board computers
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/26Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
    • G01C21/34Route searching; Route guidance
    • G01C21/36Input/output arrangements for on-board computers
    • G01C21/3626Details of the output of route guidance instructions
    • G01C21/3644Landmark guidance, e.g. using POIs or conspicuous other objects
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/26Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
    • G01C21/34Route searching; Route guidance
    • G01C21/36Input/output arrangements for on-board computers
    • G01C21/3667Display of a road map
    • G01C21/367Details, e.g. road map scale, orientation, zooming, illumination, level of detail, scrolling of road map or positioning of current position marker
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/26Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
    • G01C21/34Route searching; Route guidance
    • G01C21/36Input/output arrangements for on-board computers
    • G01C21/3667Display of a road map
    • G01C21/3676Overview of the route on the road map
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/29Geographical information databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files

Landscapes

  • Engineering & Computer Science (AREA)
  • Remote Sensing (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • Human Computer Interaction (AREA)
  • Multimedia (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Navigation (AREA)

Abstract

Nichtflüchtiges computerlesbares Medium, das Anweisungen speichert, die eine Anwendungsprogrammierungsschnittstelle zum Bereitstellen eines Navigationsdienstes als Teil einer auf einer Computervorrichtung ausgeführten Softwareanwendung implementieren, wobei die Computervorrichtung einen oder mehrere Prozessoren und eine Anzeigevorrichtung hat, wobei die Computervorrichtung konfiguriert ist, um mit einem Navigationsdatenprovider über ein Kommunikationsnetzwerk zu kommunizieren, wobei die Anwendungsprogrammierungsschnittstelle folgendes aufweist:eine erste Gruppe von Anweisungen, die einen oder mehrere erste Parameter spezifizieren, um die Implementierung eines Navigationsdienstes durch die Softwareanwendung zu steuern, wobei der Navigationsdienst betreibbar ist, um einem Anwender der Softwareanwendung Navigationsinformation zur Verfügung zu stellen;eine zweite Gruppe von Anweisungen, die einen oder mehrere zweite Parameter spezifizieren, um eine Interaktion mit einer durch den Navigationsdatenprovider zur Verfügung gestellten Navigations-Engine über die Anwendungsprogrammierungsschnittstelle zu steuern, um die als Teil des Navigationsdienstes zur Verfügung gestellte Navigationsinformation zu erhalten; undeine Wegpunkte-Funktion, die als Teil der ersten Anweisungen spezifiziert ist, die betreibbar sind, um eine Vielzahl von Wegpunkten für eine Navigationsroute einzustellen;wobei die Anwendungsprogrammierungsschnittstelle betreibbar ist, um eine Mehrfachwegpunkte-Navigationsroute zu empfangen, die basierend auf der Vielzahl von Wegpunkten bestimmt ist, wobei die Mehrfachwegpunkte-Navigationsroute eine Vielzahl von Routensegmenten aufweist,wobei die erste Gruppe von Anweisungen eine Fortsetzung-zum-nächsten-Zielort-Funktion aufweist, wobei die Fortsetzung-zum-nächsten-Zielort-Funktion betreibbar ist, um aufgerufen zu werden, um zu einem Navigieren zu einem zweiten Wegpunkt in der Mehrfachwegpunkte-Route gehörende Navigationsinformation zu erhalten, wenn ein Anwender bei einem ersten Wegpunkt in der Mehrfachwegpunkte-Route angekommen ist,wobei die erste Gruppe von Anweisungen eine oder mehrere konfigurierbare Ereignislistenerschnittstellen spezifizieren,wobei die eine oder mehreren konfigurierbaren Ereignislistenerschnittstellen eine übrige-Zeit-oder-übrige-Entfernung-geändert-Listenerschnittstelle aufweisen, die betreibbar ist, um aufgerufen zu werden, wenn eine übrige Zeit oder eine übrige Entfernung zu einem nächsten Wegpunkt in der Mehrfachwegpunkt-Navigationsroute sich um mehr als eine Schwelle geändert hat, wobei die Schwelle als ein Parameter in der ersten Gruppe von Anweisungen spezifiziert ist,wobei die konfigurierbaren Ereignislistenerschnittstellen betreibbar sind, um zu einem oder mehreren Navigationsereignissen gehörende Daten zu erhalten, um die als Teil des Navigationsdienstes zur Verfügung gestellte Navigationsinformation einem Updaten zu unterziehen.

Description

  • GEBIET
  • Die vorliegende Offenbarung betrifft allgemein Anwendungsprogrammierungsschnittstellen zum Bereitstellen von Navigationsinformation.
  • HINTERGRUND
  • Auf Computervorrichtungen, wie beispielsweise mobilen Computervorrichtungen (z. B. Smartphones, Tablets, Smartwatches, etc.), implementierte Anwendungen sind für eine Vielfalt von Zwecken, einschließlich Geschäfts-, Sozial-, Gesundheits- und anderen Zwecken, entwickelt worden. Diese Anwendungen können eine Anwenderschnittstelle (z. B. eine grafische Anwenderschnittstelle) zum Präsentieren von Information zu einem Anwender sowie zum Zulassen, dass der Anwender mit der Anwendung interagiert, zur Verfügung stellen. Populäre Anwendungen für mobile Computervorrichtungen enthalten Kartenanwendungen, die Anwendem mannigfaltige geografische Information (z. B. auf einer Karte präsentierte Information über eine aktuelle Lokalisierung) verfügbar machen.
  • In einigen Fällen kann es für eine Anwendung, die nicht primär zur Kartografie oder Navigation gedacht ist, erwünscht sein, dass sie Navigations- oder Karteninformation enthält - beispielsweise könnte es für eine Gesundheits- oder Fitnessanwendung erwünscht sein, Navigations- oder Karteninformation zur Verfügung zu stellen, um zuzulassen, dass Anwender ihren Weg um eine Laufstrecke herum finden, einen Lauf über eine bestimmte Entfernung beenden, etc. Im Prinzip könnte die Gesundheits- oder Fitnessanwendung derart geschrieben werden, dass sie eine maßgeschneiderte Navigantions- oder Kartenschnittstelle enthält, aber dies würde Programmierressourcen erfordern, um die Anwendung zu erzeugen.
  • Aus den Dokumenten „How to' for the Android SDK“; skobbler; 2016, S. 1 - 36. URL: http:// developer.skobbier.com/getting-started/android, Archiviert in http://www.archive.org am 16.03.16; „Index“; skobbler; 2015, S. 1 - 53. URL: http://developer.skobbler.com/docs/android/2.5.1/index-all.html, Archiviert in http://www.archive.org am 06.12.15; und „Release Notes“; skobbler; 2015, S. 1 ? 8. URL: http:// developer.skobbler.com/release-notes, Archiviert in http://www.archive.org am 27.10.15, ist eine Anwendungsprogrammierungsschnittstelle bekannt, mittels welcher ein Navigationsdienst in eine Softwareanwendung intgegriert werden kann.
  • ZUSAMMENFASSUNG
  • Es werden ein nichtflüchtiges Computerlesbares Medium, ein Verfahren, sowie eine Computervorrichtung gemäß der anhängenden Ansprüche offenbart. Aspekte und Vorteile von Ausführungsformen der vorliegenden Offenbarung werden teilweise in der folgenden Beschreibung dargelegt werden oder können aus der Beschreibung gelernt werden oder können durch Ausführung der Ausführungsformen gelernt werden.
  • Ein beispielhafter Aspekt der vorliegenden Offenbarung betrifft ein computerlesbares Medium, das ein nichtflüchtiges computerlesbares Medium sein kann, obwohl die Erfindung nicht auf dieses beschränkt ist, das Anweisungen speichert, die eine Anwendungsprogrammierungsschnittstelle zum Bereitstellen eines Na-vigationsdienstes als Teil einer auf einer Computervorrichtung ausgeführten Softwareanwendung implemen-tiert. Die Computervorrichtung kann einen oder mehrere Prozessoren und eine Anzeigevorrichtung haben. Die Computervorrichtung kann konfiguriert sein, um mit einem Navigationsdatenprovider über ein Kommunikati-onsnetzwerk zu kommunizieren. Die Anwendungsprogrammierungsschnittstelle kann eine erste Gruppe von Anweisungen enthalten, die einen oder mehrere erste Parameter spezifiziert, um die Implementierung eines Navigationsdienstes durch die Softwareanwendung zu steuern. Der Navigationsdienst kann betreibbar sein, um Navigationsinformation zu einem Anwender der Softwareanwendung zu liefern. Die Anwendungsprogram-mierungsschnittstelle kann weiterhin eine zweite Gruppe von Anweisungen enthalten, die einen oder mehrere zweite Parameter spezifizieren, um eine Interaktion mit einer Navigations-Engine zu steuern, die durch den Navigationsdatenprovider über die Anwendungsprogrammierungsschnittstelle zur Verfügung gestellt wird. Eine Navigations-Engine kann auch als Routing Engine bezeichnet werden. Die Anwendungsprogrammierungsschnittstelle kann weiterhin eine Wegpunkte-Funktion enthalten, die als Teil der ersten Anweisungen spezifiziert ist, die betreibbar sind, um eine Vielzahl von Wegpunkten für eine Naviga-tionsroute einzustellen. Die Anwendungsprogrammierungsschnittstelle kann betreibbar sein, um eine Mehr-fachpunkte-Navigationsroute zu empfangen, die basierend auf der Vielzahl von Wegpunkten bestimmt ist. Die Mehrfachpunkte-Navigationsroute kann eine Vielzahl von Routensegmenten enthalten.
  • Andere beispielhafte Aspekte der vorliegenden Offenbarung betreffen Systeme, Vorrichtungen bzw. Geräte, computerlesbare Medien, die materielle bzw. konkrete, nichtflüchtige computerlesbare Medien sein können, obwohl die Erfindung nicht darauf beschränkt ist, Anwenderschnittstellen, Speichervorrichtungen und elektronische Vorrichtungen zum Bereitstellen von Navigations-Anwendungsprogrammierungsschnittstellen.
  • Beispielsweise betrifft ein weiterer beispielhafter Aspekt ein Verfahren zum Integrieren eines Navigationsdienstes als Teil einer Softwareanwendung auf einer Computervorrichtung mit einem oder mehreren Prozessoren, wobei das Verfahren folgendes aufweist: Zugreifen auf zu einer Navigations-Anwendungsprogrammierungsschnittstelle gehörende Daten; Eingliedern der zu einer Navigations-Programmierungsschnittstelle gehörenden Daten in die Softwareanwendung; Erstellen einer zum Navigationsdienst gehörenden grafischen Anwenderschnittstellenkomponente unter Verwendung einer ersten Gruppe von zur Navigations-Anwendungsprogrammierungsschnittstelle gehörenden Anweisungen, wobei die erste Gruppe von Anweisungen einen oder mehrere Parameter spezifiziert, um die Anzeige der zum Navigationsdienst gehörenden grafischen Anwenderschnittstellenkomponente auf der Anzeigevorrichtung in Verbindung mit einer Softwareanwendung zu steuern; und Konfigurieren des Navigationsdienstes unter Verwendung einer zweiten Gruppe von zur Navigations-Anwendungsprogrammierungsschnittstelle gehörenden Anweisungen, wobei die zweite Gruppe von Anweisungen einen oder mehrere Parameter spezifiziert, um die Implementierung des Navigationsdienstes durch die Softwareanwendung zu steuern; wobei die zweite Gruppe von Anweisungen eine Wegpunkte-Funktion aufweist, die spezifiziert betreibbar ist, um eine Vielzahl von Wegpunkten für eine Navigationsroute einzustellen, wobei die Anwendungsprogrammierungsschnittstelle betreibbar ist, um eine Mehrpunkte-Navigationsroute zu empfangen, die basierend auf auf der Vielzahl von Wegpunkten bestimmt ist, wobei die Mehrpunkte-Navigationsroute eine Vielzahl von Routensegmenten aufweist. Das Verfahren kann folgendes aufweisen: Erhalten eines Zugriffsschlüssels zum Freigeben eines Betriebs der Navigations-Anwendungsprogrammierungsschnittstelle; und Hinzufügen des Zugriffsschlüssels zur Softwareanwendung. Zusätzlich oder alternativ kann das Verfahren ein Initialisieren der Navigations-Anwendungsprogrammierungsschnittstelle unter Verwendung einer Gruppe von zur Navigations-Anwendungsprogrammierungsschnittstelle gehörenden Initialisierungs- und Fehlerhandhabungsanweisungen aufweisen. Zusätzlich oder alternativ können die eine oder die mehreren konfigurierbaren Ereignislistenerschnittstellen eine Lokalisierungslistenerschnittstelle aufweisen, die betreibbar ist, um aufgerufen zu werden, um eine aktuelle Lokalisierung eines Anwenders im Navigationsdienst einem Updaten zu unterziehen.
  • Ein weiterer beispielhafter Aspekt betrifft eine Computervorrichtung, die folgendes aufweist: eines Anzeigevorrichtung; eine Netzwerkschnittstelle; einen oder mehrere Prozessoren; und eine oder mehrere Speichervorrichtungen, wobei die eine oder die mehreren Speichervorrichtungen computerlesbare Anweisungen speichern, die dann, wenn sie ausgeführt werden, veranlassen, dass der eine oder die mehreren Prozessoren ein Verfahren des obigen beispielhaften Aspekts durchführen.
  • In allen vorgenannten Aspekten weist die erste Gruppe von Anweisungen eine Fortsetzung-zum-nächsten-Zielort-Funktion auf, wobei die Fortsetzung-zum-nächsten-Zielort-Funktion betreibbar ist, um aufgerufen zu werden, um zu einem Navigieren zu einem zweiten Wegpunkt in der Mehrfachwegpunkte-Route gehörende Navigationsinformation zu erhalten, wenn ein Anwender bei einem ersten Wegpunkt in der Mehrfachwegpunkte-Route angekommen ist, wobei die erste Gruppe von Anweisungen eine oder mehrere konfigurierbare Ereignislistenerschnittstellen spezifizieren, und wobei die eine oder mehreren konfigurierbaren Ereignislistenerschnittstellen eine übrige-Zeit-oder-übrige-Entfernung-geändert-Listenerschnittstelle aufweisen, die betreibbar ist, um aufgerufen zu werden, wenn eine übrige Zeit oder eine übrige Entfernung zu einem nächsten Wegpunkt in der Mehrfachwegpunkte-Route sich um mehr als eine Schwelle geändert hat, wobei die Schwelle als ein Parameter in der ersten Gruppe von Anweisungen spezifiziert ist, wobei die konfigurierbaren Ereignislistenerschnittstellen betreibbar sind, um zu einem oder mehreren Navigationsereignissen gehörende Daten zu erhalten, um die als Teil des Navigationsdienstes zur Verfügung gestellte Navigationsinformation einem Updaten zu unterziehen.
  • Anwendungsprogrammierungsschnittstellen können zulassen, dass auf Computervorrichtungen implementierte Anwendungen mit verschiedenen Diensten interagieren, um Information und Funktionalität zu einem Anwender zu liefern. Anwendungsprogrammierungsschnittstellen können ein Werkzeug für Entwickler zur Ver-fügung stellen, um Information, Programmierung, Frameworks und Strukturen in Anwendungen für einen Zu-griff durch den Anwender einzubetten. Beispielsweise kann ein Kartendienstherausgeber bzw. - provider eine Karten-Anwendungsprogrammierungsschnittstelle zur Verfügung stellen, die durch dritte Parteien verwendet werden kann, um eine digitale Karte in eine Anwenderschnittstelle einer durch die dritte Partei entwickelten Anwendung einzubetten. Dies vermeidet die Notwendigkeit für den Entwickler der dritten Partei, seine eigene Kartenanwendung zu erzeugen.
  • Diese und andere Merkmale, Aspekte und Vorteile von verschiedenen Ausführungsformen werden unter Bezugnahme auf die folgende Beschreibung und die beigefügten Ansprüche besser verstanden werden. Die beigefügten Zeichnungen, die in dieser Beschreibung enthalten sind und einen Teil von ihr bilden, stellen Ausführungsformen der vorliegenden Offenbarung dar und dienen zusammen mit der Beschreibung dazu, die zugehörigen Prinzipien zu erklären.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Eine detaillierte Diskussion von Ausführungsformen, die an Fachleute auf dem Gebiet gerichtet ist, wird in der Beschreibung dargestellt, welche auf die angehängten Figuren Bezug nimmt, in welchen:
    • 1 einen Überblick auf ein beispielhaftes System zum Implementieren eines Navigationsdienstes als Teil einer Softwareanwendung unter Verwendung einer Anwendungsprogrammierungsschnittstelle gemäß beispielhaften Ausführungsformen der vorliegenden Offenbarung zeigt;
    • 2-3 eine beispielhafte grafische Anwenderschnittstellenkomponente zeigt, die zu einem Navigationsdienst als Teil einer Softwareanwendung gemäß beispielhaften Ausführungsformen der vorliegenden Offenbarung gehört;
    • 4 ein Blockdiagramm einer beispielhaften Anwendervorrichtung zeigt, die eine Softwareanwendung gemäß beispielhaften Ausführungsformen der vorliegenden Offenbarung implementiert;
    • 5 ein Blockdiagramm einer beispielhaften Navigations-Anwendungsprogrammierungsschnittstelle gemäß beispielhaften Ausführungsformen der vorliegenden Offenbarung zeigt;
    • 6 ein Blockdiagramm von beispielhaften Navigatoranweisungen zeigt, die zu einer Navigations-Anwendungsprogrammierungsschnittstelle gemäß beispielhaften Aspekten der vorliegenden Offenbarung gehören;
    • 7 ein Ablaufdiagramm eines beispielhaften Verfahrens gemäß beispielhaften Ausführungsformen der vorliegenden Offenabrung zeigt;
    • 8 ein Blockdiagramm einer beispielhaften Navigations-Anwendungsprogrammierungsschnittstelle gemäß beispielhaften Ausführungsformen der vorliegenden Offenbarung zeigt; und
    • 9 ein Blockdiagramm von beispielhaften Navigatoranweisungen zeigt, die zu einer Navigations-API gemäß beispielhaften Aspekten der vorliegenden Offenbarung gehören.
  • DETAILLIERTE BESCHREIBUNG
  • Nun wird detailliert auf Ausführungsformen Bezug genommen werden, von welchen eines oder mehrere Beispiele in den Zeichnungen dargestellt ist oder sind. Jedes Beispiel ist mittels Erklärung der Ausführungsformen und nicht mittels Beschränkung der vorliegenden Offenbarung zur Verfügung gestellt. Tatsächlich wird es Fachleuten auf dem Gebiet klar sein, dass verschiedene Modifikationen und Variationen an den Ausführungsformen durchgeführt werden können, ohne vom Schutzumfang oder Sinngehalt der vorliegenden Offenbarung abzuweichen. Beispielsweise können als Teil einer Ausführungsform dargestellte oder beschriebene Merkmale mit einer anderen Ausführungsform verwendet werden, um eine noch weitere Ausführungsform zu ergeben. Somit ist beabsichtigt, dass Aspekte der vorliegenden Offenbarung solche Modifikationen und Variationen abdecken.
  • Beispielhafte Aspekte der vorliegenden Offenbarung sind auf Anwendungsprogrammierungsschnittstellen („APIs“) zum Liefern von Navigationsinformation in Softwareanwendungen einer dritten Partei, die auf einer oder mehreren Computervorrichtungen implementiert sind, wie beispielsweise webbasierte Softwareanwendungen, die in einem Browser implementiert sind, lokal gespeicherte Softwareanwendungen und andere Anwendungen. Bei einigen Ausführungsformen kann die API zulassen, dass Anwendungsentwickler ein durch einen Navigationsdatenprovider oder eine andere Quelle gelieferte Navigationsanwendung in ihre Softwareanwendung einbetten. Die API kann zulassen, dass der Entwickler die Navigationsanwendung auf einfache Weise an einen Kunden anpasst und an spezielle Bedürfnisse anpasst, um variierende Plattformen und Endanwendungsfälle aufzunehmen bzw. unterzubringen.
  • Spezifischer kann die API, wenn sie durch eine auf einer Computervorrichtung implementierte Softwareanwendung aufgerufen wird, konfiguriert sein, um Routing- bzw. Führungsinformation von einem Datenprovider über eine Kommunikationsschnittstelle (z. B. über ein Netzwerk, wie beispielsweise das Internet) anzufragen und zu empfangen. Die API kann konfiguriert sein, um Navigationsinformation (z. B. durch eine grafische Anwenderschnittstellenkomponente oder durch Audio- und/oder Vibrationshinweise) basierend auf der Routinginformation zu präsentieren, um einen Navigationsdienst zur Verfügung zu stellen, der in der Softwareanwendung eingebettet ist. Ein Navigationsdienst kann eine Anwendung (z. B. eine Softwareanwendung) sein, die Navigationsinformation liefert bzw. zur Verfügung stellt, die dazu verwendet werden kann, einen Anwender von einem Ursprung zu einem Zielort zu führen. Bei einigen Ausführungsformen kann der in der Softwareanwendung eingebettete Navigationsdienst Navigationsinformation (z. B. Navigationsinformation mit Routenführung) zu einem Anwender liefern, wenn sich ein Anwender entlang einer Navigationsroute oder einem anderen Weg bewegt. Genauer gesagt kann der Navigationsdienst bei einigen Ausführungsformen eine Route empfangen, die einen Anwender von einer aktuellen Stelle zu einem Zielort führt. Als Beispiel kann die Route eine Folge von Schritten enthalten, die jeweils einen Routenteilbereich (z. B. Name oder Nummer der Straße, Entfernung, Wegzeit, Geschwindigkeitsbegrenzung) und ein Manöver (z. B. Abbiegen nach links, nach rechts einfädeln, geradeaus weiter) beschreiben, um auf den nächsten Routenteilbereich zuzugreifen. Der Navigationsdienst kann die Route einem Anwender durch eine grafische Anwenderschnittstelle und über einen oder mehrere Hinweise (z. B. Audio- oder Videohinweise) liefern, um den Anwender von einem Ursprung zu einem Zielort zu führen.
  • Bei einigen Ausführungsformen kann die Softwareanwendung mit einer Routing Engine, die durch einen Navigationsdatenprovider oder eine andere Quelle (z. B. eine lokale Quelle von Navigationsinformation) implementiert ist, über die API interagieren, um Routinginformation und andere Navigationsinformation zu erhalten. Der Navigationsdatenprovider kann zu einer separaten Einheit in bezug zum Entwickler der Softwareanwendung gehören. Beispielsweise kann der Navigationsdatenprovider zu einem Web-Server gehören, der ein Host eines geografischen Informationssystems ist. Die Navigationsinformation kann eine Route zu einem oder mehreren Wegpunkten enthalten. Die Navigationsinformation kann weiterhin Kartendaten zur Präsentation in Verbindung mit der Route und anderer Information enthalten. Die Navigationsinformation kann kontinuierlich einem Updaten unterzogen werden (z. b. durch eine oder mehrere Ereignislistenerschnittstellen, die als Teil der API implementiert sind), wenn der Anwender die Navigationsroute durchläuft, um Navigationsinformation in Echtzeit oder nahe an einer Echtzeit für einen Anwender zu liefern.
  • Die API kann, wenn sie durch eine Softwareanwendung implementiert ist, die zum Navigationsdienst gehörende Navigationsinformation in einer in Verbindung mit der Softwareanwendung angezeigten grafischen Anwenderschnittstellenkomponente visuell präsentieren. Beispielsweise kann die grafische Anwenderschnittstellenkomponente eine Karte anzeigen. Die Vorgabeanzeige der Karte kann beispielsweise eine Ansicht der Karte von oben nach unten sein. Während eines Navigationsmodes kann die grafische Anwenderschnittstellenkomponente eine Route in einem Linienzug auf der Karte anzeigen. Die Position des Anwenders kann entlang der Route einem Updaten unterzogen werden, wenn der Anwender die Route navigiert. Beispielsweise kann der Navigationsdienst eine grafische Anwenderschnittstelle zur Verfügung stellen, wo eine Position des Anwenders entlang der Navigationsroute kontinuierlich einem Updaten unterzogen wird, wenn sich die Anwenderposition entlang der Navigationsroute ändert. Verschiedene Wegpunkte können durch in der Karte lokalisierte Markierungen identifiziert werden. Andere Information kann in der grafischen Anwenderschnittstellenkomponente präsentiert werden, wie beispielsweise eine geschätzte Zeit oder eine Entfernung, die bis zu einer Ankunft bei einem Wegpunkt bleibt („ETD-Information“), ein Kompassschnittstellenelement, ein Navigationsanfangs- bzw. -headingelement, etc. Bei einigen Ausführungsformen kann die Navigationsinformation unter Verwendung einer Audioführung mit oder ohne einer visuellen Anzeige von Navigationsinformation in der grafischen Anwenderschnittstellenkomponente geliefert werden.
  • Gemäß bestimmten Aspekten der vorliegenden Offenbarung kann die API Gruppen von computerlesbaren Anweisungen enthalten, die dann, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, eine Integration der Navigationsanwendung in eine Softwareanwendung eines Entwicklers erleichtern. Die Gruppen von Anweisungen können, wenn sie durch einen oder mehrere Prozessoren implementiert sind, eine Interaktion durch die Softwareanwendung mit dem Navigationsdatenprovider über die API sowie die Anzeige und/oder Ausgabe von Navigationsinformation zum Anwender als Teil der Softwareanwendung verwalten bzw. regulieren.
  • Genauer gesagt können beispielhafte zu einer API gehörende Anweisungen, denen sich ein Entwickler einer Softwareanwendung gegenübergestellt sieht, eine Gruppe von Anweisungen enthalten, die einen oder mehrere Parameter spezifizieren, die die Anzeige der visuellen Ausgabe des Navigationsdienstes verwalten. Die API kann weiterhin eine Gruppe von Anweisungen enthalten, die einen oder mehrere Parameter spezifizieren, die die Implementierung des Navigationsdienstes steuern, und eine Gruppe von Anweisungen, die die Interaktion der API mit der Routing Engine verwalten, die durch den Navigationsdatenprovider geliefert ist.
  • Gemäß bestimmten Aspekten der vorliegenden Offenbarung kann die API eine oder mehrere Ereignislistenerschnittstellen enthalten, die dann, wenn sie aufgerufen werden, zulassen, dass die die API aufrufende Softwareanwendung Daten erhält, die verschiedene Navigationsereignisse (z. B. von dem Navigationsdatenprovider oder dem Netzwerk) anzeigen. Die Navigationsereignisse können beispielsweise eine einem Updaten unterzogene Anwenderposition, eine geänderte Route, ein Update an der ETD-Information, eine Ankunft an einem Wegpunkt, etc. sein. Die konfigurierbaren Ereignislistenerschnittstellen können verwendet werden, um die Navigationsinformation kontinuierlich einem Updaten zu unterziehen, wenn sich ein Anwender entlang einer Route bewegt, und zwar auf eine Weise, die durch den Entwickler der Softwareanwendung erwünscht ist. Beispielsweise kann eine Ereignislistenerschnittstelle verwendet werden, um die aktuelle Lokalisierung eines Anwenders entlang einer Navigationsroute einem Updaten zu unterziehen. Eine weitere beispielhafte Ereignislistenerschnittstelle kann verwendet werden, um EDT-Information zu einer oder mehreren Wegpunkten einem Updaten zu unterziehen. Eine weitere beispielhafte Ereignislistenerschnittstelle kann verwendet werden, um zu signalisieren, wenn ein Anwender bei einem bestimmten Wegpunkt angekommen ist. Eine weitere beispielhafte Ereignislistenerschnittstelle kann verwendet werden, wenn ein Anwender von einer Route abweicht, die durch die Routing Engine bestimmt ist, und sich die Route zu einem durch Routing Engine bestimmten Wegpunkt ändert.
  • Bei einigen Implementierungen kann die API konfiguriert sein, um eine Navigation für eine Vielzahl von Wegpunkten unterzubringen. Daten, die die Vielzahl von Wegpunkten anzeigen, können über die API beispielsweise in einer Listenform, die die Wegpunkte aufreiht, empfangen werden. Die Routing Engine kann eine Mehrfachwegpunkte-Route zu der Vielzahl von Wegpunkten bestimmen. Die Mehrfachwegpunkte-Route kann eine Vielzahl von Routensegmenten enthalten. Jedes Routensegment kann eine Route zwischen Wegpunkten in der Mehrfachwegpunkte-Route oder zwischen einer Startlokalisierung und einem Wegpunkt in der Mehrfachwegpunkte-Route sein.
  • Die API kann eine oder mehrere Ereignislistenerschnittstellen enthalten, um ein Liefern von Navigationsinformation basierend auf einer Mehrfachwegpunkte-Route unterzubringen. Beispielsweise können die eine oder mehreren Ereignislistenerschnittstellen konfiguriert sein, um Benachrichtigungen zu liefern, wenn ein jeweiliger Wegpunkt erreicht ist, wenn sich ETD-Information zum nächsten Wegpunkt ändert oder wenn sich irgendein Teil der Mehrfachwegpunkte-Route ändert. Zusätzlich können die eine oder mehreren Ereignislistenerschnittstellen konfiguriert sein, um einen Zugriff auf EDT-Information für jeden Wegpunkt entlang der Mehrfachwegpunkte-Route, einen Zugriff auf geografische Koordinaten (z. B. Breitengrad und Längengrad) für jeden Wegpunkt, einen Zugriff auf die zu einem Routensegment gehörende Information (z. B. Navigationslinienzug) zwischen einem jeweiligen Wegpunkt entlang der Mehrfachwegpunkte-Route und/oder einen Zugriff darauf, wo der Anwender entlang der Mehrfachwegpunkte-Route unabhängig von der Route zum nächsten Wegpunkt in der Mehrfachwegpunkte-Route gewesen ist, zu liefern.
  • Auf diese Weise können die APIs gemäß beispielhaften Ausführungsformen der vorliegenden Offenbarung einen technischen Effekt eines Erleichterns der Integration eines Navigationsdienstes, der durch einen Navigationsdatenprovider zur Verfügung gestellt wird, bei verschiedenen Softwareanwendungen haben. Eine oder mehrere Ereignislistenerschnittstellen, die als Teil der APls implementiert sind, können verwendet werden, um die Navigationsinformation kontinuierlich einem Updaten zu unterziehen, wenn sich ein Anwender entlang einer Navigationsroute auf eine Weise bewegt, die durch den Entwickler erwünscht ist. Die APls können die Kundenanpassung des Navigationsdienstes für verschiedene Endanwendungsnotwendigkeiten zulassen, wie beispielsweise für Fahrgemeinschaftsanwendungen, Versand-/Auslieferungsanwendungen, soziale Anwendungen und andere Endanwendungsanwendungen.
  • 1 zeigt einen Überblick eines beispielhaften Systems 100 zum Implementieren eines Navigationsdienstes als Teil einer Softwareanwendung unter Verwendung einer Navigations-API gemäß beispielhaften Ausführungsformen der vorliegenden Offenbarung. Das System 100 kann eine Anwendervorrichtung 112 enthalten, die Navigationsdaten von einem Navigationsdatenprovider 114 über ein Kommunikationsnetzwerk 116 empfangen kann. Die Anwendervorrichtung 112 kann beispielsweise ein Smartphone, ein Tablet, eine tragbare Vorrichtung, ein Laptop, ein Desktop, eine mobile Vorrichtung, eine Vorrichtung, die von einem Anwender getragen werden kann, während sie in Betrieb ist, eine Anzeige mit einem oder mehreren Prozessoren, ein Fahrzeugsystem oder eine andere Anwendervorrichtung 112 sein.
  • Eine Softwareanwendung 120 kann auf der Anwendervorrichtung 112 implementiert sein. Die Softwarenwendung kann beispielsweise eine Kartierungsanwendung, ein Browser, eine Fahrgemeinschaftsanwendung, eine Anwendung, die zum Unterstützen bei einer Auslieferung verwendet wird, eine soziale Medienanwendung oder eine andere Softwareanwendung sein, die es nötig haben kann, Navigationsinformation zu einem Anwender zu liefern. Die Softwareanwendung 120 kann lokal auf der Anwendervorrichtung 112 gespeichert sein oder kann beispielsweise eine Web-Anwendung sein, auf die über einen Browser zugegriffen wird, der auf der Anwendervorrichtung 112 implementiert ist. Bei einigen Ausführungsformen kann die Softwareanwendung 120 durch eine Einheit einer dritten Partei entwickelt sein, die unabhängig von und/oder nicht angegliedert ist an eine Einheit, die zu dem Navigationsdatenprovider 114 gehört.
  • Die Softwareanwendung 120 kann eine Navigations-API 130 aufrufen, um auf Navigationsdaten vom Navigationsdatenprovider 114 über das Kommunikationsnetzwerk 116 zuzugreifen und diese zu liefern, so dass ein Navigationsdienst in der Softwareanwendung 120 eingebettet sein kann. Beispielhafte Aspekte der vorliegenden Offenbarung werden mit einem Zugreifen auf Daten von.einem entfernten Navigationsdatenprovider 114 zu Zwecken einer Darstellung und Diskussion diskutiert. Fachleute auf dem Gebiet werden unter Verwendung der hierin zur Verfügung gestellten Offenbarung verstehen, dass die API 130 auf Daten von anderen Quellen zugreifen kann, wie beispielsweise von lokalen Quellen oder von Anwendungen, die auf der Anwendervorrichtung 112 lokalisiert sind.
  • Der Navigationsdienst kann Navigationsinformation (z. B. Navigationsinformation mit Routenführung) in Echtzeit oder nahezu in Echtzeit zu einem Anwender präsentieren, wenn sich ein Anwender oder ein Fahrzeug, der oder das die Anwendervorrichtung 112 trägt, entlang einer Route von einem Ursprung zu einem oder mehreren Zielorten bewegt. Der Navigationsdienst kann eine grafische Anwenderschnittstellenkomponente zum Präsentieren der Navigationsinformation zum Anwender auf einer oder mehreren Anzeigevorrichtungen enthalten. Zusätzlich oder alternativ kann der Navigationsdienst eine Audioführung oder andere Benachrichtigungen (z. B. Vibrationsbenachrichtigungen) zum Anwender liefern, die Navigationsinformations-(z. B. mit Routenführung)Wegbeschreibungen anzeigen.
  • 2 zeigt eine beispielhafte grafische Anwenderschnittstellenkomponente 200, die zu einem Navigationsdienst gehört, der als Teil einer grafischen Anwenderschnittstelle 122 einer Softwareanwendung 120 eingebettet ist, gemäß beispielhaften Ausführungsformen der vorliegenden Offenbarung. Die grafische Anwenderschnittstellenkomponente 200 kann auf einer Anzeigevorrichtung der Anwendervorrichtung 112 angezeigt werden. Die grafische Anwenderschnittstellenkomponente 200 kann verschiedene Schnittstellenelemente enthalten, die Navigationsinformation zu einem Anwender als Teil eines Navigationsdienstes liefern. Wie es in 2 gezeigt ist, enthält die grafische Anwenderschnittstellenkomponente 200 eine Karte 202 sowie eine Route 210, die auf der Karte 202 präsentiert ist. Zusätzlichen können Markierungen 212, die Wegpunkte anzeigen, auf der Karte 202 präsentiert werden. Die Route 210 wird auf einer Ansicht der Karte 202 von oben nach angezeigt, um einen Routenüberblick zu liefern. Gemäß beispielhaften Ausführungsformen der vorliegenden Offenbarung können zur Karte 202 gehörende Daten, die Route 210 und zu den Wegpunkten 212 gehörende Information und andere Navigationsinformation von einem Navigationsdatenprovider 114 über eine API 130 erhalten werden, die durch die Softwareanwendung 120 aufgerufen wird, wie es unten detaillierter diskutiert werden wird.
  • 3 zeigt einen weiteren Aspekt einer grafischen Anwenderschnittstellenkomponente 200, die zu einem Navigationsdienst gehört, der als Teil einer grafischen Anwenderschnittstelle 122 einer Softwareanwendung 120 eingebettet ist, gemäß beispielhafter Ausführungsformen der vorliegenden Offenbarung. Bei dem Beispiel der 3 kann der Navigationsdienst gerade Navigationswegbeschreibungen mit Routenführung mit der grafischen Anwenderschnittstellenkomponente 200, wenn der Anwender oder das Fahrzeug eine Route durchläuft, in Echtzeit oder nahezu in Echtzeit liefern. Die grafische Anwenderschnittstellenkomponente 200 kann verschiedene Schnittstellenelemente zum Präsentieren von Navigationsinformation zu einem Anwender enthalten. Beispielsweise kann die grafische Anwenderschnittstellenkomponente 200 eine Karte 202 und eine in einem Linienzug auf der Karte 202 präsentierte Route 210 enthalten. Die grafische Anwenderschnittstellenkomponente 200 kann weiterhin Indizien 230 präsentieren, die eine aktuelle Position des Anwenders oder des Fahrzeugs anzeigen, der oder das entlang der Route 210 fährt. Die Indizien 230 können sich entlang der Route 210 bewegen, wenn sich der Anwender oder das Fahrzeug entlang der Route 210 bewegt.
  • Die grafische Anwenderschnittstellenkomponente 200 kann dem Anwender andere Information präsentieren, die bei einer Navigation nützlich sein kann. Beispielsweise kann die grafische Anwenderschnittstellenkomponente 200 weiterhin ein Navigationsanfangselement 220 enthalten, das die aktuelle Navigationsrichtung und andere Information, die zu einer aktuellen Position der Route gehört, anzeigen. Zusätzlich kann die grafische Anwenderschnittstellenkomponente 200 EDT-Information 232 anzeigen, wie beispielsweise geschätzte Minuten oder eine geschätzte Entfernung bis zur Ankunft beim nächsten Wegpunkt. Gemäß beispielhaften Ausführungsformen der vorliegenden Offenbarung können zur Karte 202 gehörende Daten, die Route 210, etc. von einem Navigationsdatenprovider 114 oder einer anderen Quelle über eine API 130 erhalten werden, die durch die Softwareanwendung 120 aufgerufen wird. Eine oder mehrer Ereignislistenerschnittstellen, die als Teil der Navigations-Programmierungsschnittstelle 130 implementiert sind, können verwendet werden, um die Navigationsinformation einem Updaten zu unterziehen, wenn sich der Anwender oder das Fahrzeug entlang der Route bewegt.
  • Die beispielhaften grafischen Anwenderschnittstellenkomponenten 200 können angezeigt werden, wenn die API 130 in einem Navigationsmode arbeitet. In den Navigationsmode kann basierend auf verschiedenen Ereignissen eingetreten werden, wie beispielsweise das Spezifizieren von einer oder mehreren Wegpunkten und/oder der Empfang einer Anwendereingabe, die den Wunsch signalisiert, einen Navigationsmode zu beginnen. Bei einigen Ausführungsformen kann die grafische Anwenderschnittstellenkomponente 200, wenn sie im Navigationsmode arbeitet, die Route 210 anzeigen. Wenn sie nicht im Navigationsmode arbeitet, kann die grafische Anwenderschnittstellenkomponente 200 einfach eine Ansicht einer Karte von oben nach unten oder eine andere geeignete Ansicht der Karte anzeigen.
  • Die 2 und 3 zeigen eine beispielhafte Implementierung einer grafischen Anwenderschnittstellenkomponente, die zu einem Navigationsdienst gehört, der in einer Anwendung 120 eingebettet sein kann, und zwar unter Verwendung einer Navigations-API 130 gemäß beispielhaften Ausführungsformen der vorliegenden Offenbarung. Der Navigationsdienst kann Navigationsinformation in anderen geeigneten Formen präsentieren, ohne vom Schutzumfang der vorliegenden Offenbarung abzuweichen.
  • Nimmt man wieder Bezug auf 1, kann die API 130 konfiguriert sein, um mit einer Routing Engine 140 eine Schnittstelle zu bilden, die durch den Navigationsdatenprovider 114 implementiert ist. Die Routing Engine 140 kann konfiguriert sein, um beispielsweise Routen zu einer oder mehreren Wegpunkten zu berechnen, auf Kartografiedaten zuzugreifen, Navigationsdaten basierend auf verschiedenen Navigationsereignissen einem Updaten zu unterziehen und auf Anfragen nach Navigationsdaten von der API 130 zu antworten. Bei einigen Ausführungsformen kann der Navigationsdatenprovider 114 einen oder mehrere Server, wie beispielsweise Webserver, enthalten. Der eine oder die mehreren Server kann oder können einen oder mehrere Prozessoren und eine oder mehrere Speichervorrichtungen enthalten. Die eine oder die mehreren Speichervorrichtungen kann oder können ein computerlesbare Anweisung speichern, um beispielsweise die Routing Engine 140 zu implementieren. Bei einigen Ausführungsformen kann die Routing Engine 140 auf Daten zugreifen, die beispielsweise zu einem geografischen Informationssystem 115 gehören. Das geografische Informationssystem 115 kann Daten enthalten, die durch geografische Koordinaten von seinen Elementen indiziert sind. Die zum geografischen System 115 gehörenden Daten können beispielsweise Kartendaten, Routendaten, geografische bildliche Darstellung, zu verschiedenen Wegpunkten gehörende Daten (z. B. Geschäftsauflistungsnamen, Adressen, geografische Koordinaten, etc.) und andere Daten enthalten.
  • Die Anwendung 120 kann einen Navigationsdienst durch Interagieren mit dem Navigationsdatenprovider 114 über die API 130 über das Netzwerk 116 implementieren. Das Netzwerk 116 kann irgendein Typ von Kommunikationsnetzwerk sein, wie beispielsweise ein lokales Netz (z. B. Intranet), ein Fernnetz (z. B. Internet), ein zellulares Netzwerk oder eine Kombination davon. Das Netzwerk 116 kann auch eine direkte Verbindung enthalten. Im Allgemeinen kann eine Kommunikation über das Netzwerk 116 unter Verwendung von irgendeinem Typ einer verdrahteten und/oder drahtlosen Verbindung unter Verwendung einer Vielfalt von Kommunikationsprotokollen (z. B. TCP/IP, HTTP, SMTP, FTP), Codierungen und Formaten (z. B. HTML, XML) und/oder Schutzschemen (z. B. VPN, sicheres HTTP, SSL) getragen werden.
  • 4 zeigt eine beispielhafte Anwendervorrichtung 112, die konfiguriert ist, um eine Navigations-API 130 gemäß beispielhaften Ausführungsformen der vorliegenden Offenbarung zu implementieren. Wie es gezeigt ist, enthält die Anwendervorrichtung 112 einen Anweisungsspeicher 152, einen oder mehrere Prozessoren 154, die konfiguriert sind, um im Speicher 152 gespeicherte Anweisungen auszuführen, eine Anzeigevorrichtung 156, eine Netzwerkschnittstelle 158, die Netzwerkkommunikationen unterstützt, und einen Speicherungsspeicher 160. Der Klarheit halber sind der Anweisungsspeicher 152 und der Speicherungsspeicher 160 separat dargestellt. Es wird jedoch verstanden werden, dass die Komponenten 152 und 160 auch Bereiche innerhalb desselben Speichermoduls sein können. Allgemeiner kann die Anwendervorrichtung 112 einen oder mehrere zusätzliche Prozessoren, Speichervorrichtungen, Netzwerkschnittstellen enthalten, die separat oder auf einem selben Chip oder einer selben Leiterplatte vorgesehen sein können. Weiterhin können die Komponenten 152 und 160 einen persistenten Speicher (z. B. einen Flash-Speicher), einen flüchtigen Speicher (z. B. RAM) oder beides oder einen anderen geeigneten Speicher enthalten.
  • Der Anweisungsspeicher 152 kann Gruppen von Anweisungen eines Betriebssystems (OS) 170, eine Navigations-API 130 und eine Softwareanwendung 120 speichern. Das OS 170 kann ein mobiles OS sein, das spezifisch für mobile Vorrichtungen entwickelt ist. Als solches kann das OS 170 Funktionen enthalten, die zulassen, dass die Softwareanwendung auf Daten, wie beispielsweise Parameter eines drahtlosen Netzwerks (z. B. eine Identität des drahtlosen Netzwerks, eine Dienstqualität) zugreift, sowie solche Funktionen wie Telefonie, Lokalisierungsbestimmung (z. B. über das globale Positioniersystem (GPS) oder WLAN), Datenaufrufentstehung des drahtlosen Netzwerks, etc. aufruft. Bei anderen Implementierungen ist das OS 170 ein allgemeines Betriebssystem, das auf sowohl mobilen als auch stationären Vorrichtungen arbeitet, wie beispielsweise Smartphones und Desktopcomputern. Bei einigen beispielhaften Implementierungen enthält das OS ein durch Google Inc. entwickeltes mobiles Betriebssystem Android® oder ein ähnliches Betriebssystem oder basiert darauf, um eine Android-Betriebsplattform zu implementieren. Jedoch können andere ähnliche Systeme verwendet werden, ohne vom Schutzumfang der vorliegenden Offenbarung abzuweichen.
  • Die Softwareanwendung 120 kann beispielsweise eine Kartografieanwendung, eine Navigationsanwendung, eine Fahrgemeinschaftsanwendung, eine Anwendung zum Unterstützen einer Auslieferung, eine soziale Medienanwendung, etc. sein. Weiterhin kann die Softwareanwendung 120 eine Web-Browseranwendung sein, die die Navigations-API 130 aufruft, um Navigationsinformation innerhalb eines zugeteilten Teilbereichs eines Browser-Fensters anzuzeigen. Im Allgemeinen kann die Navigations-API 130 irgendeiner geeigneten Softwareanwendung verfügbar gemacht werden, die auf der Anwendervorrichtung 120 ausführt. Ebenso können multiple unterschiedliche Softwareanwendungen die Navigations-API 130 aufrufen.
  • Wie es oben diskutiert ist, kann die Softwareanwendung 120 die Navigations-API 130 aufrufen, um einen Navigationsdienst in die Softwareanwendung 120 einzubetten. Beispielsweise kann bei einem Beispiel eine Softwareanwendung 120 einen oder mehrere Wegpunkte zur Navigations-API 130 liefern. Die Navigations-API 130 kann Navigationsdaten von einem entfernten Navigationsdatenprovider anfordern, um eine Navigationsroute basierend auf dem einen oder den mehreren Wegpunkten zu bestimmen. Die Navigations-API 130 kann Gruppen von Anweisungen enthalten, um die Anzeige von Navigationsinformation auf der mobilen Vorrichtung als Teil des Navigationsdienstes zu steuern. Die API 130 kann einen oder mehrere Ereignislistener enthalten, die verwendet werden, um die angezeigte Navigationsinformation beispielsweise basierend auf Anwenderlokalisierung einem Updaten zu unterziehen, wie sie durch ein als Teil der Anwendervorrichtung implementiertes Positioniersystem bestimmt ist.
  • Bei einigen Ausführungsformen kann das Positioniersystem eine oder mehrere Vorrichtungen oder eine Schaltung zum Bestimmen der Position einer Vorrichtung enthalten. Beispielsweise kann die Positioniervorrichtung eine aktuelle oder relative Position durch Verwenden eines Satelliten-Navigations-Positioniersystems (z. B. eines GPS-Systems, eines Galileo-Positioniersystems, des GLObalen Navigations-Satellitensystems (GLONASS), des BeiDou-Satelliten-Navigations- und Positioniersystems), eines Trägheitsnavigationssystems, eines Koppelnavigationssystems basierend auf einer IP-Adresse durch Verwenden einer Triangulation und/oder einer Nähe zu zellularen Sendetürmen oder WiFi-Hotspots, Signalfeuern und ähnlichem und/ oder von anderen geeigneten Techniken zum Bestimmen einer Position bestimmen.
  • Die Navigations-API 130 kann als eine oder einige Funktionen, eine Datenstruktur, etc. implementiert sein. Weiterhin kann die API 130 einen compilierten Code enthalten, der direkt auf dem (den) Prozessoren) 154 ausführt, oder, alternativ dazu, Anweisungen in irgendeiner anderen Form, wie beispielsweise einer Skriptsprache, die durch die Anwendung 120 während der Laufzeit interpretiert wird. Die API 130 enthält bei einer beispielhaften Implementierung gut dokumentierte Prototypen von einigen Funktionen, die ein Entwickler in den Code der Softwareanwendung 120 einschließen kann, sowie Anweisungen, die diese Funktionen implementieren. Bei einigen Ausführungsformen kann die API 130 dem Entwickler als statische Bibliothek zur Verfügung gestellt werden.
  • 5 zeigt ein Blockdiagramm von beispielhaften Gruppen von Anweisungen, die ein Entwickler verwenden kann, um die Navigations-API 130 gemäß beispielhaften Ausführungsformen der vorliegenden Offenbarung zu konfigurieren. Die Gruppen von Anweisungen können beispielsweise Initialisierungs- und Fehlerhandhabungsanweisungen 310 enthalten; Navigationsfragmentanweisungen 320, die Parameter spezifizieren können, um die Anzeige der visuellen Ausgabe des Navigationsdienstes zu steuern; verschieden Klassen 330, die in den Anweisungen spezifiziert sind, die zulassen, dass ein Entwickler beispielsweise Markierungen zu einer Karte hinzufügt und Wegpunkte spezifiziert; Navigatoranweisungen 350, die Parameter spezifizieren können, um die Implementierung des Navigationsdienstes zu steuern; und Navigationsdienstanweisungen 370, die Parameter spezifizieren können, um die Interaktion mit dem Navigationsdatenprovider zum Anfragen und Empfangen von Navigationsinformation (z. B. Routinginformation) zu steuern. Bei einigen Ausführungsformen können die Navigationsdienstanweisungen 370 auch die Logik enthalten, die verwendet wird, um den Navigationsdienst als Teil der Softwareanwendung zu implementieren (z. B. um Indizes, die eine Anwenderposition anzeigen, entlang einer Route zu bewegen).
  • Bei einigen Ausführungsformen kann die Navigations-API 130 wie folgt implementiert sein. Als erstes kann ein Entwickler einer Softwareanwendung die Navigationsfragmentklasse 320 zu ihrer Anwendung hinzufügen, um die visuelle Ausgabe (z. B. grafische Anwenderschnittstellenkomponente) des Navigationsdienstes anzuzeigen. Der Entwickler kann den Navigationsdienst durch Spezifizieren von einem oder mehreren Parametern in den Navigationsanweisungen 350 steuern. Wenn sie nicht im Navigationsmode ist, kann die Navigationsfragmentklasse 320 konfiguriert sein, um beispielsweise eine Übersichtskarte von oben nach unten anzuzeigen. Ein Aufrufen einer Gruppen-Wegpunktefunktion in den Navigatoranweisungen 350 (z. B. Navigator.set(Wapoint(...)) kann eine navigationsroute in einem Linienzug auf einer Karte mit einer Markierung für jeden Wegpunkt. Der Entwickler kann eine Navigation zum Wegpunkt durch Aufrufen einer Navigationsmodeeintrittsfunktion in den Navigatoranweisungen 350 (z. B. Navigator.enterNavigationMode()) auslösen.
  • Der Navigationsmode kann andauern, bis der Wegpunkt erreicht ist (z. B. wie es durch einen Ereignislistener bestimmt wird) oder bis eine Navigationsmodeaustrittsfunktion in den Navigatoranweisungen 350 aufgerufen wird (z. B. Navigator.exitNavigationMode()). Bei einigen Implementierungen kann der Navigationsmode ohne einen Wegpunkt in einem freien Navigationsformat verwendet werden. In einem freien Navigationsformat kann die Lokalisierung eines Anwenders (z. B. basierend auf einem Positioniersystem der Anwendervorrichtung) verwendet werden, um die aktuelle Lokalisierung des Anwenders auf einer Karte einem Updaten zu unterziehen. Bei einigen Ausführungsformen kann der Entwickler Markierungen zu der Karte hinzufügen, und zwar unter Verwendung einer Kartenerlangungsfunktion, die in den Navigationsfragmentanweisungen 320 spezifiziert ist (z. B. NavigationFragment.getMap()).
  • Nimmt man Bezug auf 5, können die Initialisierungs- und Fehlerhandhabungsanweisungen 310 eine Eintrittsstelle für die API 130 sein, von welcher aus ein Entwickler einen Zugriff auf die Navigatoranweisungen 350 erhalten kann. Auf diese Weise kann die Initialisierungs- und Fehlerhandhabungslogik separat von der Navigationslogik gehandhabt werden. Die Initialisierungs- und Fehlerhandhabungsanweisungen 310 können einen API-Schlüssel erfordern, um den Entwickler zu autorisieren, die API zu verwenden. Die Initialisierungs- und Fehlerhandhabungsanweisungen 310 können auch erfordern, dass ein Anwender Ausdrücke und Bedingungen akzeptiert, die durch den Navigationsdatenprovider geliefert werden, bevor der Navigationsdienst verwendet wird.
  • Bei einigen Ausführungsformen können die Initialisierungs- und Fehlerhandhabungsanweisungen 310 wie folgt implementiert sein:
Class NavigationApi {
           /**
           * Fragt einen Fall von {@link Navigator} an, der über
           * {@link NavigatorListener} zurückgebracht ist. Es ist zu beachten,
           * dass Navigator ein Singleton bzw. eine einelementige Menge ist; wenn
           * Du dieses Verfahren mehrmals aufrufst, wird jeder Aufruf
           * denselben Navigator zurückbringen.
           */
Static void getNavigator (Application application, NavigatorListener listener);
// Statuscodes für #initialize(Application)
/**
           * Der API-Schlüssel, den Du bereitgestellt hast, ist nicht autorisiert, die
           * Navigations-API zu verwenden. Dies kann deshalb so sein, weil die
           * frühe Zugriffsperiode abgelaufen ist. Deine App sollte zu einem
           * anderen Navigationsmechanismus zurückfallen, wenn dieser Code
           * empfangen wird, um sicherzustellen, dass der Mechanismus für
           * Anwender nicht abbricht, die deine App nicht einem
           * Updaten unterzogen haben, nachdem die frühe Zugriffsperiode der
           * Navigations-API abläuft.
           */
@ErrorCode
public static final int ERROR_NOT_AUTHORIZED = 1;
/**
           * Der Anwender hat die Konditionen des Navigationsdatenproviders
           * nicht akzeptiert. Dem kann durch Bitten des Anwenders,
           * Navigationskonditionen des Navigationsdatenproviders zu 

           * akzeptieren, abgeholfen werden.
           * Siehe {@link #createTermsActivitylntent(Context)}.
           */
 @ErrorCode
 public static final int ERROR_TERMS_NOT_ACCEPTED = 2;
 /**
           * Die Navigations-API ist unfähig, auf das Internet zuzugreifen.
           */
 @ErrorCode
 public static final int NETWORK_ERROR = 3;
 /**
           * Zeigt einen Dialog, der den Anwender dirigiert, Bestimmungen und
           * Konditionen des Navigationsdatenproviders zu akzeptieren. Wenn ein
           * Listener vorgesehen ist, wird er mit der Antwort des Anwenders
           * benachrichtigt werden.
           */
public static void showTermsAndConditionsDialog (
Activity Activity, @Nullable On TermsResponseListener listener);
/**
           * Bringt {@code true} zurück, wenn der Anwender zuvor Bestimmungen
           * und Konditionen des Navigationsdatenproviders akzeptiert hat.
           */
public static boolean areTermsAccepted (Application application);
/**
           * Den Bestimmungs- und Konditionenakzeptanzzustand zurücksetzen
           * - zum Testen. Einen Aufruf dazu hinzufügen, bevor es irgendwelche
           * Aufrufe zu {@link NavigationApi} gibt, wenn Du den Bestimmungs-
           * und Konditionendialog testen möchtest.
           */
public static void resetTermsAccepted (Application application);
/**
           * Einen Navigatorlistener mit {@link #getNavigator(Application, 

           * NavigatorListener)} registrieren, um über den Zustand von {@link
           * Navigator) benachrichtigt zu werden. Es ist zu beachten, dass nur
           * eines der Navigatorlistener-Verfahren aufgerufen werden wird und
           * alle Aufrufe auf dem Ul-Thread auftreten.
           */
 public interface NavigatorListener {
 /**
           * Zeigt an, das ein {@link Navigator} erfolgreich erzeugt wurde, und
           * bringt ihn zum Aufrufenden zurück.
           */
 void onNavigatorReady( Navigator navigator);
 /**
           * Zeigt an, dass ein Fehler beim Initialisieren von {@link Navigator)
           * auftrat. {@code errorcode) ist eine der @ErrorCode-Konstanten.
           */
 void onError(@ErrorCode int errorCode);
 }
 /**
           * Einen eingeschalteten Bestimmungsantwortlistener {@link
                         #showTermsAndConditionsDialog} registrieren,
           * um benachrichtigt zu werden, wenn der Anwender die Bestimmungen
           * und Konditionen akzeptiert. Die Benachrichtigung wird auf dem Ul-
           * Thread auftreten.
           */
 public interface OnTermsResponseListener {
 /**
           * Zeigt an, ob die Bestimmungen und Konditionen durch den Anwender
           * akzeptiert wurden.
           */
 void on TermsResponse( boolean accepted)
 }
 }
  • Ein beispielhafter Anwendungsfall ist wie folgt:
  •  @Override
     protected void onCreate(Bundle savedInstanceState) {
               super .onCreate(savedlnstanceState);
               this .findViewByld(R.id.start_button ).setOnClickListener(
                  new View.OnClickListener() {
                     @Override
                     public void onClick(View v) {
                       startNavigation();
    
                     }
                 });
     }
     private void startNavigation() {
               // nach einem Navigator fragen
               NavigationApi. getNavigator (getApplication(),
                 new NavigationApi.NavigatorListener() {
               @Override
               public void onNavigatorReady(Navigator Navigator) {
                 // Wir erhielten einen Navigator, stellen einen Zielort ein, starten Na             vigation
     
                 // UI zum Bildschirm hinzufügen
                 navigator.setDestination(Waypoint. fromPlaceId (
                    getPlaceId(), „Pickup location" ));
                 navigator.startNavigation();
                 getFragmentManager()
                    .beginTransaction()
                    .add(R.id.body_container, new NavigationFragment())
                    .commit();
     }
     @Override
     public void onError( @NavigationApi.ErrorCode int errorcode) { 
    
               switch (errorCOde) {
               // Der Anwender hat die Bestimmungen noch nicht akzeptiert; veranlassen von Ihnen, dies zu tun.
               case NavigationApi. INIT_STATUS_TERMS_NOT_ACCEPTED :
                 Dialog dlg =
                    NavigationApi.createTermsAcceptanceDialog(SimpleActivity.this );
                 dlg.show();
                 // TRD zurückrufen
                 }
               }
               });
     }
  • Die Navigationsfragmentanweisungen 320 können einen oder mehrere Parameter spezifizieren, um eine Implementierung der grafischen Anwenderschnittstellenkomponente zu steuern. Entwickler können die Navigationsfragmentanweisungen 320 hinzufügen, um die visuelle Ausgabe einer Navigation (z. B. eine interaktive Karte und Weisungen mit Routenführung) in Verbindung mit der Softwareanwendung anzuzeigen. Bei einigen Ausführungsformen können die Navigationsfragmentanweisungen 320 eher als ein Fragment in einer auf Android basierenden Betriebsplattform implementiert sein als als eine Ansicht, um die Komplexität zu reduzieren. Beispielsweise kann ein Verwenden einer Ansichtsimplementierung erfordern, dass der Entwickler Lebenszyklusverfahren (z. B. onCreate(), onResume(), etc.) manuell zu der Ansicht befördert. Bei einigen Ausführungsformen können die Navigationsfragmentanweisungen 320 als eine Ansicht implementiert sein, ohne vom Schutzumfang der vorliegenden Offenbarung abzuweichen.
  • In einer Android-Betriebsplattform kann ein Fragment ein Teilbereich einer Anwenderschnittstelle einer Anwendung sein, die in eine Aktivität versetzt sein kann. Bei einigen Ausführungsformen können mehrere Fragmente als Teil einer Anwendung implementiert sein, um eine Anwenderschnittstelle mit mehreren Ausschnitten zu bilden. Ein Fragment kann seinen eigenen Lebenszyklus haben und kann seine eigenen Eingangsereignisse empfangen, die hinzugefügt oder entfernt werden können, während die Aktivität gerade in Betrieb ist bzw. läuft. Beispielhafte Aspekte der vorliegenden Offenbarung werden mit einem Implementieren der Navigationsfragmentanweisungen 320 in einer Android-Betriebsplattform zu Zwecken einer Illustration und Diskussion diskutiert. Die Navigationsfragmentanweisungen 320 können auf andere Weisen implementiert werden, um eine ähnliche Funktionalität zur Verfügung zu stellen, ohne vom Schutzumfang der vorliegenden Offenbarung abzuweichen.
  • Die Navigationsfragmentanweisungen 320 können Parameter enthalten, die zulassen, dass ein Entwickler steuert, welche Aspekte der zum Navigationsdienst gehörenden grafischen Anwenderschnittstellenkomponente gezeigt werden. Beispielsweise kann der Entwickler die grafische Anwenderschnittstelle mit Bauherrenfunktion in den Navigationsfragmentanweisungen 320 bilden (z. B. NavigationFragment.Builder). Bei einigen Ausführungsformen kann der Entwickler wählen, ob ein Navigationanfang, ein Kompasselement, ETD-Information oder andere Information in Verbindung mit dem Navigationsdienst anzuzeigen ist.
  • Bei einer Ausführungsform kann die grafische Anwenderschnittstellenkomponente wie folgt gebildet sein:
  •  NavigationFragment f = new NavigationFragment. Builder ()
               .setNavigationHeaderEnabled (true)
               .setEtaCardEnabled (false)
               .setCompassButtonEnabled (true)
               . build();
  • Als ein weiteres Beispiel kann die grafische Anwenderschnittstellekomponente unter Verwendung von XML wie folgt gebildet sein:
  • <fragment android:name =
     „com.navprovider.android.libraries.navigation.NavigationFragment"
               navigation:navigation_header_enabled = "true"
               navigation:eta_card_enabled = "false"
               navigation:compass_button_enabled = "true" />
  • Bei einigen Ausführungsformen kann eine Fragmentklassenschnittstelle wie folgt implementiert sein:
  • class NavigationFragment {
    
              static dass Builder {
                 // gibt den Navigationsanfang des Fragments frei oder nicht.
                 Builder setNavigationHeaderEnabled( boolean enabled);
                 //Gibt die ETA-Karte (z.B. ETD-Information) des Fragments frei oder
                 nicht.
                 Builder setEtaCardEnabled( Boolean enabled);
                 //Gibt die Kompasstaste frei oder nicht.
                 Builder setCompassButtonEnabled (boolean enabled);
                 // Bildet das Navigationsfragment.
                 NavigationFragment build();
              }
                 // Erlangt einen Bezug zu der Karte des Fragments, die verwendet
                 // werden kann, um Markierungen anzuzeigen und die Kamera zu
                 // modifizieren.
              Map getMap();
             }
  • Bei alternativen Ausführungsformen kann die grafische Anwenderschnittstellenkomponente auch eher als eine Ansicht in einer Android-Betriebsplattform als als ein Fragment implementiert sein. Wenn die Navigationsansicht verwendet wird, können verschiedene Lebenszyklusereignisse von der Anwendungsaktivität weitergeleitet werden.
  • Beispielsweise kann bei einer Ausführungsform die Navigationsansicht wie folgt implementiert sein.
  •  NavigationView mNavigationView
     @Override
     protected void onStart() {
               super .onStart();
               mNavigationView.onStart();
               }
  • Es kann nötig sein, dass die folgenden Lebenszyklusverfahren für eine Navigationsansichtsgruppe von Anweisungen weitergeleitet wird: onCreate, onStart, onResume, onPause, onStop, onDestroy, onConfigurationChanged, onSaveInstanceState.
  • Bei einigen Ausführungsformen kann die API 130 verschiedene Klassenanweisungen 330 enthalten, wie beispielsweise einen Kartenklasse, eine Wegpunkteklasse, eine Breitengrad/Längengrad-Klasse und eine Kameraklasse. Die Kartenklasse kann dafür sorgen, dass ein Entwickler Wegpunkte zu einer Karte hinzufügt. Die Kartenklasse kann auch verschiedene Funktionen enthalten, um die Darstellungen der Karte in der grafischen Anwenderschnittstellenkomponente zu steuern. Beispielsweise kann die Kartenklasse bei einigen Implementierungen wie folgt implementiert sein:
  •  Class Map {
              // Bildet einen Markierer mit den spezifizierten Optionen und fügt ihn zur
    
               Karte hinzu.
               Marker addMarker (MarkerOptions options)
    
              // Löscht alle Markierer aus der Karte.
              void clear();
              // Schwenkt und zoomt die Karte, um eine Übersicht über die gesamte 
    
    
    
    
               // Route zu zeigen. Dies wir temporär verhindern, dass die Kamera der
               // Position eines Anwenders folgt. Die Kamera kann zurückgesetzt
               // werden, um zu folgen, und zwar unter Verwendung
               // von {@link #resetCamera()}.
               void showRouteOverview( boolean animate);
               // Schwenkt und zoomt die Karte zu der spezifizierten Stelle. Dies wird
               // temporär verhindern, dass die Kamera der Position eines Anwenders
               // folgt. Die Kamera kann zurückgesetzt werden, um zu folgen, und zwar
               // unter Verwendung von {@link #resetCamera()};
               void setCamera (LatLng center, float zoom, boolean animate);
               // Setzt die Kamera zuück zu ihrem Vorgabemode (d.h. beim Navigieren
               II wird die Kamera der Position eines Anwenders folgen).
     Void resetCamera (boolean animate);
     }
  • Die Wegpunkteklasse kann Wegpunkte aus verschiedenen Daten erzeugen oder spezifizieren, die die Lokalisierung des Wegpunktes anzeigen, wie beispielsweise eine Platzidentifikation, eine Adresse, Breitengrad/LängengradKoordinaten, semantischer Name oder eine andere Platzidentifikation. Bei einigen Implementierungen kann die Wegpunkteklasse wie folgt spezifiziert werden:
  • class Waypoint {
               // Erzeugt einen Wegpunkt aus einer Platz-ID. Wirft eine illegale
               // Argumentenausnahme aus, wenn die Platz-ID ungültig war.
               Staic Waypoint fromPlaceID (string placelD);
               // Erzeugt einen Wegpunkt aus Breitengrad/Längengrad und einen
               // optionalen Titel.
               Static waypoint from LatLng (double latitude, double longitude,
               @Nullable String title);
     }
  • Die Breitengrad/Längengrad-Klasse kann dazu verwendet werden, eine Breitengrad/Längengrad-Variable zu erzeugen, die eine Platzlokalisierung basierend zumindest teilweise auf Daten anzeigt, die Breitengrad und Längengrad anzeigen. Bei einem Beispiel kann die Breitengrad/Längengrad-Klasse wie folgt implementiert sein:
  •  class LatLng {
               /** Breitengrad in Grad. Dieser Wert ist im Bereich [-90, 90].*/
               public final double latitude
    
              /** Längengrad in Grad. Dieser Wert ist im Bereich [-180, 180].*/
    
               public final double longitude
    
              /**
                 * Bildet einen Breitengrad/Längengrad mit dem gegebenen
                 * Breitengrad und Längengrad, gemessen in Grad.
                 * @param latitude, der Breitengrad der Stelle. Dies wird eingeklemmt
                 * zwischen -90 Grad und +90 Grad, einschließlich.
                 * @param longitude, der Längengrad der Stelle. Dies wird derart
                 * normalisiert, das es zwischen -180 Grad und +180 Grad,
                 * ausschließlich, ist.
                 */
              public LatLng (double latitude, double longitude);
     }
  • Eine weitere beispielhafte Klasse, die implementiert werden kann, kann eine Kameraklasse sein, die dazu verwendet werden kann, die Position und die Perspektive der Karte einzustellen, die als Teil der Navigation gezeigt wird. Eine Bezugnahme auf die aktuelle Kamera kann unter Verwendung einer Schnittstelle für Erlangen einer Kamera erhalten werden, die als Teil des Navigationsfragments spezifiziert ist. Bei einem Beispiel kann die Kameraklasse wie folgt implementiert sein:
  •  class Camera {
               /**
                  * Einstellen der Kamera, um der Lokalisierung des Anwenders zu
                  * folgen. Dies wird typischerweise aufgrufen, wenn eine Führung mit
                  * Routenführung begonnen wird, um in eine "geneigte" Fahrtansicht
                  * einzutreten.
                  *
                  * @param perspective, eine Auswahl von {@link Perspective}, was
                  * spezifiziert, welche Perspektive die Kamera verwenden sollte, wenn
                  * sie folgt.
                  */
               void followMyLocation (@ Perspective int perspective);
               /**
                  * Schwenkt und zoomt die Karte, um eine Übersicht der restlichen
                  * Route zu zeigen. Dies wird temporär verhindern, dass die Kamera
                  * der Position eines Anwenders folgt.
                  * <p>
                  * Die Kamera kann zurückgesetzt werden, um dem Anwender zu
                  * folgen, und zwar unter Verwendung von {@link #folowMyLocation}.
                  */
               void showRouteOverview();
               @ lntDef({Perspective.TILTED, Perspective.TOP_DOWN_HEADING-UP, Perspective.TOP_DOWN_NORTH-UP})
               @ interface Perspective {
                 /**
                     * Eine geneigte Perspektive, die in dieselbe Richtung wie der 
    
                     * Anwender gerichtet ist. Allgemein verwendet während einer
                     * Fahrtnavigation.
                     */
                  int TILTED = 0;
                  /**
                     * Eine Perspektive von oben nach unten von dem Ziel der Kamera,
                     * die in dieselbe Richtung wie der Anwender gerichtet ist. Dies ist
                     * äquivalent zu einem Abgreifen der Kompasstaste während einer
                     * Navigation.
                     */
                  int TOP_DOWN-HEADING_UP = 1;
    
                 /**
                     * Eine auf Norden ausgerichtete Perspektive von oben nach
                     * unten von dem Ziel der Kamera. Dies wird allgemein verwendet,
                     * wenn eine Übersicht über eine Auswahl von Markierungen
                     * gezeigt wird.
    
                    */
                 int TOP_DOWN_NORTH _UP = 2;
     }
  • Die Navigatoranweisungen 350 können einen oder mehrere Parameter spezifizieren, um die Implementierung des Navigationsdienstes durch die Softwareanwendung zu steuern. Bei einigen Ausführungsformen können die Navigatoranweisungen 350 als ein Singleton bzw. eine einelementige Menge in einer Android-Betriebsplattform implementiert sein. Dies kann zulassen, dass der Entwickler die Navigatoranweisungen 350 implementiert, ohne dass eine Verwendung der Navigationsfragmentanweisungen 320 erforderlich ist. Als Ergebnis kann der Navigationsdienst Navigationsinformation (z. B. unter Verwendung von Audiobenachrichtigungen) ohne grafische Anwenderschnittstellenkomponente zur Verfügung stellen. Dies kann nützlich sein, wenn ein Anwender während eines Navigierens eine vollständige Bildschirmaufgabe über die Anwendung beendet, die die API 130 aufruft. Darüberhinaus kann es sein, dass es nicht nötig ist, mehr als eine Gruppe von Navigatoranweisungen zu einer gegebenen Zeit zu implementieren.
  • Die Navigatoranweisungen 350 können beispielsweise bestimmen, ob eine Route zu einer oder mehreren Zielort-Wegpunkten erfolgreich berechnet und empfangen worden ist, und kann konfiguriert sein, um Information zu liefern, die anzeigt, ob eine Route empfangen wurde oder ob es verschiedene Fehler (z. B. Netzwerkfehler) gab. Die Navigatoranweisungen 350 können weiterhin dazu verwendet werden, eine Fahrsimulation zu ermöglichen, die ein Fahren entlang einer berechneten Route simulieren kann. Die Navigatoranweisungen 350 können auch Parameter spezifizieren, die zu einer Audioführung gehören, um Audiohinweise oder Vibrationshinweise während einer Navigation zu liefern.
  • Bei einer beispielhaften Ausführungsform können die Navigatoranweisungen 350 wie folgt implementiert sein:
  •  class Navigator {
              /**
                 * Ein Routenstatus ist ein Statuscode, der das Ergebnis einer
                 * Routenberechnung darstellt, auf das über die durch
                 * {@link #setDestination(Waypoint)} zurückgebrachte Zukunft
                 * zurückgebracht wird.
                 */
               public enum RouteStatus {
                 // Eine Route zum Zielort wurde erfolgreich berechnet.
                 OK,
                 // Eine Route zum Zielort konnte nicht berechnet werden.
                 NO_ROUTE_FOUND,
                 // Eine Route zum Zielort konnte aufgrund eines Netzwerkfehlers
                 // nicht berechnet werden.
                 NETWORK_ERROR
                 // Eine Route zum Zielort konnte aufgrund unzureichender
                 // Sollvorgaben nicht berechnet werden.
                 QUOTA_CHECK_FAILED 
    
     }
     // Stellt den Zielort ein, was irgendeinen (irgendwelche) zuvor
     // eingestellten Zielort (eingestellte Zielorte) ersetzt.
     // Die Zukunft wird ein {@link RouteStatus} zurückbringen, was das
     // Ergebnis darstellt.
     ListenableFuture < RouteStatus > setDestination (Waypoint waypoint);
     // Stellt die Liste von kommenden Navigationswegpunkten ein, was
     // irgendeine zuvor eingestellte Liste von Wegpunkten ersetzt.
     // Die zurückgebrachte Zukunft wird auf richtig eingestellt, wenn eine
     // Route gefunden wurde, die alle erwünschten Wegpunkte verbindet,
     // und sonst auf falsch.
     ListenableFuture<boolean> setWaypoints(List<Waypoint> waypoint);
     // Tritt in Navigationsmode ein. Wenn ein Wegpunkt eingestellt ist,
     // beginnt eine Navigation.
     void startNavigation();
     // Tritt aus dem Navigationmode aus und geht zurück zur
     // Übersichtskarte.
     void StopNavigation();
     // Gibt eine Fahrsimulation frei oder sperrt sie. Nützlich zum Debuggen.
     // Wenn sie freigegeben ist, werden Indizien automatisch starten, sich
     // entlang der spezifizierten Route in Richtung zum nächsten
     // Wegpunkt zu bewegen.
     // if (BuildConfig.DEBUG) { Navigator.setSimulationEnabled(true); }
     void setSimulationEnabled (Boolean enabled);
     // Audioführung ist eine Gruppe von Flags, die verwendet werden, um
     // zu spezifizieren, welche Arten von Audioführung während einer
     // Navigation verwendet werden. 
    
    
     public @interface AudioGuidance {
       /**
       * Spezifiziert, dass Sprachführung und Vibrationen gesperrt werden
       * sollten. Dieses Flag sollte immer durch sich selbst spezifiziert
       * werden; es ist ein Fehler, dieses mit irgenwelchen anderen
       * {@link AudioGuidance}-Flags zu kombinieren.
       */
       int Silent = 0
       /**
          * Spezifiziert, dass Vibrationen freigegeben werden sollten.
          */
       int VIBRATION = 1;
       /**
          * Spezifiziert, dass eine Stimme freigegeben werden sollte. Es ist
          * zu beachten, dass dieser Wert allein nicht zulassen wird, dass
          * eine Sprachführung über Bluetooth abgespielt wird; um dies
          * freizugeben, sollte stattdessen
          * {@link AudioGuidance, VOICE_WITH_BLUETOOTH} verwendet
          * werden.
       */
       int VOICE = 2;
       /**
          * Spezifiziert, dass eine Sprachführung freigegeben werden sollte
          * und, wenn verfügbar, über Bluetooth übertragen werden sollte.
          * Dieses Flag gibt eine Supergruppe der Funktionalität von
          * {@link AudioGuidance.VOICE} frei.
          */
       int VOICE_WITH_BLUETOOTH = 4
       /**
          * Stellt ein, welche Typen von Audioführung (einschließlich
          * Vibrationen) freigegeben werden. Durch Vorgabe werden
          * Vibration, Stimme und Stimme über Bluetooth (wenn 
    
    
                     * verfügbar) freigegeben.
    
                    * @param guidance, eine Kombination von {@link
                    * AudioGuidance}-Flags, die spezifizieren, welche Typen von
                    * Audioführung freigegeben werden sollten.
                    */
                    void setAudioGuidance (@Audioguidance int guidance);
     ...
     }
  • Gemäß beispielhaften Aspekten der vorliegenden Offenbarung können die Navigatoranweisungen 350 eine oder mehrere Ereignislistenerschnittstellen 360 implementieren. Die Ereignislistenerschnittstellen 360 können mit den Navigatoranweisungen 350 registriert sein. Die Ereignislistenerschnittstellen 360 können für alle Rückrufe verwendet werden, um Daten zu erhalten, die zu einem oder mehreren Navigationsereignissen gehören, um die Navigationsinformation einem Updaten zu unterziehen, die als Teil des Navigationsdienstes geliefert wird. Ein Navigationsereignis kann irgendein Ereignis sein, das die Navigationsinformation beeinflussen kann, die dem Anwender präsentiert wird. Beispielsweise kann das Navigationsereignis eine Änderung bezüglich einer Anwenderposition sein, eine Änderung bezüglich Verkehrsbedingungen, eine Änderung bezüglich einem oder mehreren Wegpunkten, eine Änderung bezüglich Routeninformation, eine Änderung bezüglich ETD-Information, etc. Auf diese Weise können die Ereignislistener verwendet werden, um die Navigationsinformation einem Updaten zu unterziehen, die als Teil des Navigationsdienstes präsentiert wird, wenn ein Anwender entlang einer Route reist oder navigiert. Bei einem Beispiel können die Ereignislistenerschnittstellen 360 mit den Navigatoranweisungen 350 wie folgt registriert sein:
  •  class Navigator {
    ...
    
              // Rückrufe. Auf Null setzen, um sie zu entfernen.
              void setLocation.Listener(@Nullable LocationListener listener); 
    
    
    
              void setArrivalListener (@Nullable ArrivalListener listener);
              void setRouteChangedListener (@Nullable RouteChangedListener
    
               listener);
    
              /**
                 * Registriert einen Listener dafür, wenn die übrige Zeit oder
                 * Entfernung zum Zielort sich um mehr als eine spezifizierte Schwelle
                 * ändert. Ist irgendwelchen zuvor registrierten Listenern
                 * übergeordnet.
                 * <p>
                 * Der Listener könnte als ein Ergebnis von (beispielsweise) einer
                 * Anwenderbewegung, einer Änderung bezüglich
                 * Verkehrsbedingungen, einer Änderung bezüglich einer Route, einer
                 * Änderung bezüglich eines Zielorts oder dann, wenn die übrige Zeit
                 * und Entfernung zum erstem Mal bekannt werden, aufgerufen
                 * werden.
                 *
                 * @param timeChangeThresholdSeconds, Wenn die absolute
                 * Änderung bezüglich der übrigen Zeit in Sekunden größer als dieser
                 * Wert oder gleich diesem ist, dann wird der Listener aufgerufen. Diese
                 * Schwelle muss nicht negativ sein.
                 * @param distanceChangeThresholdMeters, Wenn die absolute
                 * Änderung bezüglich der übrigen Entfernung in Metern größer als
                 * dieser Wert oder gleich diesem ist, dann wird der Listener
                 * aufgerufen. Diese Schwelle muss nicht negativ sein.
                 * @param listener, der Listener zum Register. Muss nicht
                 * {@code null) sein
                 */
               void setRemainingTimeOrDistanceChangedListener(
                    int timeChangeThresholdSeconds
                    int distanceChangeThresholdMeters 
    
    
    
    
                     RemainingTimeOrDistanceChangedListener listener);
               /**
                  * Löscht den Listener für Änderungen bezüglich übriger Zeit oder
                  * Entfernung.
                  */
                  void clearRemainingTimeOrDistanceChangedListener();
     }
  • 6 zeigt ein Blockdiagramm der einen oder der mehreren Ereignislistenerschnittstellen 360, die als Teil der Navigatoranweisungen 350 gemäß beispielhafter Ausführungsformen der vorliegenden Offenbarung implementiert sein können. Wie es in 6 dargestellt ist, können die eine oder die mehreren Ereignislistenerschnittstellen 360 eine Lokalisierungslistenerschnittstelle 362, eine Route-geändert-Listenerschnittstelle 364, eine Ankunftslistenerschnittstelle 366 und/oder eine ETD-Listenerschnittstelle 368 enthalten. Die Ereignislistenerschnittstellen 360 können konfigurierbare Ereignislistenerschnittstellen 360 sein, so dass der Entwickler verschiedene Einstellungen und Parameter der Ereignislistenerschnittstelle 360 in den zu der API 130 gehörenden Anweisungen spezifizieren kann, wie beispielsweise in den Navigatoranweisungen 350.
  • Die Lokalisierungslistenerschnittstelle 362 kann konfiguriert sein, um (z. B. durch die Navigatorschnittstelle) aufgerufen zu werden, um eine aktuelle Lokalisierung eines Anwenders im Navigationsdienst einem Updaten zu unterziehen. Auf diese Weise kann der Navigationsdienst die aktuelle Lokalisierung des Anwenders entlang einer Navigationsroute anzeigen, wenn die aktuelle Lokalisierung des Anwenders einem Updaten unterzogen ist. Eine beispielhafte Lokalisierungslistenerschnittstelle 362 kann wie folgt implementiert sein:
  •  interface Navigator.LocationListener {
              // Aufgerufen, wenn die Lokalisierung/der Kurs eines Fahrers,
              // aufgenommen auf der Straße, einem Updaten unterzogen wird. Dies
              // wird zu der am schnellsten verfügbaren Rate von der
              // Navigations-Engine zur Verfügung gestellt.
              void onLocationUpdated(android.location. Location location); 
     }
  • Die Route-geändert-Listenerschnittstelle 364 kann konfiguriert sein, um aufgerufen zu werden, um Routeninformation einem Updaten zu unterziehen, wenn sich die berechnete Route ändert. Beispielsweise kann die Routeninformation einem Updaten unterzogen werden, wenn eine bessere Route berechnet wird oder wenn ein Anwender von einer empfohlenen Route abweicht. Die durch die Route-geändert-Listenerschnittstelle 364 zur Verfügung gestellte Route kann in einem Linienzug zur Anzeige in Verbindung mit einer Karte als Teil des Navigationsdienstes zur Verfügung gestellt werden. Eine beispielhafte Routegeändert-Listenerschnittstelle 364 kann wie folgt implementiert sein:
  •  interface Navigator.RouteChangedListener {
              // Aufgerufen, wenn sich die Route ändert, z.B. wenn eine bessere
              // Route berechnet wird oder wenn der Fahrer von der empfohlenen
              // Route abweicht.
              // Die gelieferte Route ist der Linienzug für die neue Route.
              void onRouteChanged (List < LatLng > route);
     }
  • Die Ankunftslistenerschnittstelle 366 kann aufgerufen werden, um zu signalisieren, wenn ein Anwender an einem spezifizierten Wegpunkt angekommen ist. Beispielsweise kann die Ankunftslistenerschnittstelle 366 aufgerufen werden, um einen Navigationsmode zu verlassen, wenn ein Anwender bei einem Wegpunkt angekommen ist. Eine beispielhafte Ankunftslistenerschnittstelle 366 kann wie folgt implementiert sein:
  •  interface Navigator.ArrivalListener {
              // Aufgerufen, wenn der Fahrer bei einem spezifizierten Wegpunkt
              // angekommen ist.
              void onArrivedAtWaypoint (Waypoint waypoint);
     }
  • Die ETD-Listenerschnittstelle 368 (z. B. eine Listenerschnittstelle für übrige Zeit oder übrige Entfernung) kann aufgerufen werden, wenn eine Zeit, die übrig ist, oder eine Entfernung, die übrig ist, zu einem Wegpunkt sich um mehr als eines Schwelle geändert hat. Die Schwelle kann als ein Parameter in den Navigatoranweisungen 350 spezifiziert sein. Die ETD-Information (z. B. Zeit, die übrig ist, oder Entfernung, die übrig ist) kann sich als Ergebnis von Navigationsereignissen, wie beispielsweise eine Anwenderbewegung (z. B. eine Änderung bezüglich einer Anwenderposition), eine Änderung bezüglich Verkehrsbedingungen, eine Änderung bezüglich einer Route, eine Änderung bezüglich einem oder mehreren Wegpunkten, oder wenn die übrige Zeit oder die übrige Entfernung zum ersten Mal bekannt werden, ändern. Die einem Updaten unterzogene ETD-Information kann dem Anwender als Teil des Navigationsdienstes, zum Beispiel als Teil einer grafischen Anwenderschnittstellenkomponente oder durch eine Audioführung oder eine andere Benachrichtigung, präsentiert werden. Eine beispielhafte ETD-Listenerschnittstelle 368 kann wie folgt implementiert sein:
  •  interface Navigator.RemainingTimeAndDistanceChangedListener {
               /**
                 * Aufgerufen auf einem Ul-Thread, wenn die Zeit oder Entfernung
                 * zum Zielort sich um mehr als die Schwellen geändert hat, die in
                 * {@link Navigator #setRemainingTimeAndDistanceChanged(int,int,
                 * RemainingTimeAndDistanceChangedListener)} spezifiziert sind.
                 * Dies könnte das Ergebnis von (beispielsweise) einer
                 * Anwenderbewegung, einer Änderung bezüglich
                 * Verkehrsbedingungen, einer Änderung bezüglich einer Route, einer
                 * Änderung bezüglich eines Zielorts, oder wenn die übrige Zeit oder
                 * die übrige Entfernung zum ersten Mal bekannt werden, sein.
                 */
              void onRemainingTimeAndDistanceUpdated(
                 Waypoint waypoint, int remainingTimeSeconds, int distanceMeters);
                 }
  • In 5 gezeigte Navigationsdienstanweisungen 370 können tatsächlich den Navigationsdienst antreiben (z. B. können die Logik für den Navigationsdienst zur Verfügung stellen) und können durch die in den Navigatoranweisungen 350 aufgezeigten Parameter gesteuert werden. Die Navigationsdienstanweisung 370 kann eine Interaktion mit einer Routing Engine steuern, um Navigationsinformation basierend auf Parametern zur Verfügung zu stellen, die in den Navigatoranweisungen 350 spezifiziert sind, und Navigationsereignisse, wie es durch eine oder mehrere Ereignislistenerschnittstellen 360 bestimmt ist. Bei einigen Ausführungsformen spezifizieren Entwickler Parameter für die Navigationsdienstanweisungen 370 nicht und die Navigationsdienstanweisungen agieren als eine interne Schnittstelle für die API 130. Entwickler können die Navigationsdienstanweisungen 370 beispielsweise durch Hinzufügen einer Referenz zu den Navigationsanweisungen zu manifest.xml für die Softwareanwendung implementieren. Beispielsweise können die Navigationsdienstanweisungen 370 wie folgt implementiert sein:
  •  < service android:name =
     "com. navprovider. android .libraries. navigation. NavigationService"/>
  • 7 zeigt ein Ablaufdiagramm eines beispielhaften Verfahrens (400) zum Integrieren eines Navigationsdienstes in eine Softwareanwendung unter Verwendung einer Navigations-API gemäß beispielhafter Ausführungsformen der vorliegenden Offenbarung. Das Verfahren (400) kann unter Verwendung von beispielsweise der in 5 gezeigten API 130 implementiert sein. 7 zeigt Schritte, die in einer bestimmten Reihenfolge durchgeführt werden, zu Illustrations- und Diskussionszwecken. Fachleute auf dem Gebiet werden, unter Verwendung der hierin zur Verfügung gestellten Offenbarung, verstehen, dass verschiedene Schritte von irgendeinem der hierin offenbarten Verfahren angepasst, modifiziert, neu geordnet, weggelassen und/oder erweitert werden können, ohne vom Schutzumfang der vorliegenden Offenbarung abzuweichen.
  • Bei (402) kann das Verfahren ein Zugreifen auf und Eingliedern von Daten (z. B. Dateien), die zu der Navigations-API 130 gehören, in die Softwareanwendung enthalten. Beispielsweise kann ein Anwender zur Navigations-API 130 gehörende Dateien beispielsweise über ein Netzwerk (z. B. das Internet) herunterladen und er kann die Navigations-API-Dateien in einem Unterverzeichnis unter einem zu der Softwareanwendung gehörenden Gradle-Root-Verzeichnis zur Verfügung stellen. Zu der Navigations-API 130 gehörende Bibliotheken und Abhängigkeiten einer dritten Partei können zur Softwareanwendung hinzugefügt werden.
  • Bei (404) kann ein Zugriffsschlüssel zum Freigeben der Navigations-API 130 erhalten werden. Bei einigen Ausführungsformen kann der Zugriffsschlüssel vom Navigationsdatenprovider erhalten werden. Der Zugriffsschlüssel kann zur Softwareanwendung hinzugefügt werden, beispielsweise zu zu der Softwareanwendung gehörendem androidmanifest.xml.
  • Bei (406) kann der Entwickler die zum Navigationsdienst gehörende grafische Anwenderschnittstellenkomponente durch Spezifizieren von Parametern in der Navigationsfragmentgruppe von Anweisungen 320 bilden (oder, bei einigen Ausführungsformen, einer Navigationsansichtsgruppe von Anweisungen). Dies kann eine interaktive Karte und eine grafische Anwenderschnittstellenkomponente einer Navigation mit Routenführung zur Softwarenwendung hinzufügen.
  • Bei (408) kann der Entwickler Initialisierungs- und Fehlerhandhabungs-Anweisungen verwenden, um die Navigations-API 130 zu initialisieren. Wenn die Navigations-API einmal initialisiert ist, können die Navigatoranweisungen 350 verwendet werden, um den Navigationsdienst zu steuern und zu konfigurieren, wie es bei (410) gezeigt ist. Beispielsweise können verschieden Funktionen spezifiziert werden, um zu bestimmen, wann ein Navigationsmode zu starten ist und wann er zu verlassen ist. Gemäß bestimmten Ausführungsformen der vorliegenden Offenbarung kann oder können ein oder mehrere Ereignislistenerschnittstellen 360 in den Navigatoranweisungen 350 enthalten sein, um Navigationsereignisse, wie beispielsweise Ankunft, Routenänderungen, Anwenderpositionsänderungen, ETD-Informationsänderungen, etc., einzufangen. Bei (412) kann das Verfahren eine Bilden und Testen der Softwareanwendung mit dem integrierten Navigationsdienst enthalten.
  • Bei einigen Ausführungsformen kann die Navigations-API 130 konfiguriert sein, um eine Mehrfachwegpunkte-Führung unter einer Vielzahl von unterschiedlichen Wegpunkten unterzubringen. Beispielsweise zeigt 8 ein Blockdiagramm einer beispielhaften Navigations-API 130, die konfiguriert ist, um eine Mehrfachwegpunkte-Führung unterzubringen. Die Navigations-API 130 kann ähnlich der in 5 gezeigten Navigations-API 130 sein. Beispielsweise kann die Navigations-API 130 der 8 Initialisierungs- und Fehlerhandhabungsanweisungen 310, Navigationsfragmentanweisungen 320 (oder bei einigen Ausführungsformen Navigationsansichtsanweisungen), verschiedene Klassenanweisungen 330 (z. B. Kartenklasse, Wegpunkteklasse, Breitengrad/Längengrad-Klasse, Kameraklasse, etc.) enthalten. Zusätzlich kann die API 130 Navigatoranweisungen 350 und Navigationsdienstanweisungen 370 enthalten. Die Navigatoranweisungen 350 können Parameter spezifizieren, um die Implementierung des Navigationsdienstes zu steuern, und Navigationsdienstanweisungen 370, die die Interaktion mit dem Navigationsdatenprovider zum Anfordern und Empfangen von Navigationsinformation steuern.
  • Die Navigatoranweisungen 350 können eine oder mehrere Mehrfachwegpunkte-Funktionen 510 und eine oder mehrere Mehrfachwegpunkte-Ereignislistenerschnittstellen 520 enthalten, um eine Mehrfachwegpunkte-Führung durch den Navigationsdienst unterzubringen. Die Mehrfachwegpunkte-Ereignislistenerschnittstellen 520 können für Rückrufe verwendet werden, um Daten zu erhalten, die zu einem oder mehreren Navigationsereignissen gehören, um die als Teil des Navigationsdienstes zur Verfügung gestellte Navigationsinformation einem Updaten zu unterziehen. Beispielsweise kann das Navigationsereignis eine Änderung bezüglich einer Anwenderposition, eine Änderung bezüglich Verkehrsbedingungen, eine Änderung bezüglich einer oder mehrerer der Vielzahl von Wegpunkten, eine Änderung bezüglich einer Routeninformation von einem oder mehreren Routensegmenten in einer Mehrfachwegpunkte-Route, eine Änderung bezüglich einer ETD-Information zu einem nächsten Zielort in einer Mehrfachwegpunkte-Route, etc. sein.
  • Die Mehrfachwegpunkte-Funktionen 510 können verwendet werden, um verschiedene Funktionen zu implementieren, die zu einer Mehrfachwegpunkte-Führung gehören. Beispielsweise können die Mehrfachwegpunkte-Funktionen verwendet werden, um einen oder mehrere Wegpunkte einzustellen, um zu veranlassen, dass eine Mehrfachwegpunkte-Route auf Lokalisierungsinformation zugreift, die zu jeder der Vielzahl von Wegpunkten entlang der Mehrfachwegpunkte-Route gehört, auf Routensegmente zwischen Wegpunkten entlang der Mehrfachwegpunkte-Route zugreift, und darauf zugreift, wo ein Anwender entlang einer Mehrfachwegpunkte-Route während einer bestimmten Navigationssession gewesen ist.
  • 9 zeigt ein Blockdiagramm der verschiedenen Mehrfachwegpunkte-Funktionen 510 und Ereignislistenerschnittstellen 520, die als Teil der oder registriert mit den Navigatoranweisungen 350 verwendet werden können, um eine Mehrfachwegpunkte-Navigation gemäß beispielhaften Ausführungsformen der vorliegenden Offenbarung zu implementieren. Beispielsweise können die Mehrfachwegpunkte-Funktionen 510 eine oder mehrere Mehrfachwegpunkte-Funktionen 512 enthalten, die verendet werden können, um eine Vielzahl von Wegpunkten für eine Mehrfachwegpunkte-Route einzustellen und zu managen. Die Mehrfachwegpunkte-Funktion 512 enthalten eine Fortsetzung-zum-Nächsten-Wegpunkte-Funktion. Bei einer Ausführungsform können die Mehrfachwegpunkte-Funktionen 512 eine eingestellte Mehrfachwegpunkte-Funktion, eine eingestellte Einzelwegpunkt-Funktion, und eine Löschungs-Wegpunkt-Funktion enthalten. Die eingestellte Mehrfachwegpunkte-Funktion kann konfiguriert sein, um eine Vielzahl von Wegpunkten für eine Mehrfachwegpunkte-Route einzustellen, die über eine Liste von Wegpunkten eingegeben ist. Die eingestellte Mehrfachwegpunkte-Funktion wird die Mehrfachwegpunkte (gegenüber irgendwelchen vorherigen Wegpunkten übergeordnet) einstellen, die in der in der Liste spezifizierten Reihenfolge besucht werden können. Die Funktion kann eine Zukunft für eine Routenstatusfunktion zurückbringen (die den Status einer berechneten Route bestimmt). Dies kann sich zu OK auflösen, wenn eine Mehrfachwegpunkte-Route für die Mehrfachwegpunkte erzeugt ist. Ein Fehlercode kann für ein Netzwerk oder Quotenfehler erzeugt werden. Bei einer Ausführungsform kann die Mehrfachwegpunkte-Funktion in den Navigatoranweisungen 350 wie folgt implementiert sein:
  • ListenbleResultFuture<RouteStatus>
    
     setDestinations(List<Waypoint>destination)
  • Eine eingestellte Einzelwegpunkt-Funktion kann als ein Nützlichkeitsverfahren verwendet werden, um einen einzelnen Wegpunkt für eine Navigationsroute einzustellen. Bei einer Ausführungsform kann die eingestellte Einzelwegpunkt-Funktion in den Navigatoranweisungen 350 wie folgt implementiert sein: ListenbleResultFuture<RouteStatus> setDestination(Waypoint destination)
  • Eine Fortsetzung-zum-Nächsten-Wegpunkte-Funktion wird verwendet um einen nächsten Wegpunkt in einem Mehrfachwegpunkte-Navigationsabschnitt zu initiieren. Bei einigen Ausführungsformen kann es erforderlich sein, dass diese Funktion explizit aufgerufen wird. Bei diesen Ausführungsformen kann sich die API nicht automatisch weiter zum nächsten Wegpunkt bewegen. Die Fortsetzung-zum-Nächsten-Zielort-Funktion kann eine Ausnahme zurückbringen, wenn es keine Wegpunkte gibt, die in der Mehrfachwegpunkte-Route übrigbleiben. Bei einigen Ausführungsformen kann die Fortsetzung-zum-Nächsten-Zielort-Funktion in den Navigatoranweisungen 350 wie folgt implementiert sein:
  •  void continueToNextDestination() throws NoNextDestinationException
     to Waypoint continueToNextDestination()
  • Eine Löschungs-Wegpunkt-Funktion kann verwendet werden, um einen oder mehrere (z. B. alle) zuvor eingestellten Wegpunkte zu löschen. Diese Funktion kann auch eine Navigation stoppen, wenn gerade eine Navigation in Betrieb war. Bei einigen Ausführungsformen kann die Löschungs-Wegpunkt-Funktion in den Navigatoranweisungen 350 wie folgt implementiert sein:
  •  void clearDestination()
  • Wie es in 9 gezeigt ist, können der eine oder die mehreren Ereignislistener 520 eine Ankunftsereignislistenerschnittstelle 522 enthalten. Die Ankunftsereignislistenerschnittstelle kann aufgerufen werden, wenn ein Anwender bei einem bestimmten Wegpunkt angekommen ist. Bei einigen Ausführungsformen kann die Ankunftsereignislistenerschnittstelle 522 mit den Navigatoranweisungen 350 wie folgt registriert sein:
  •  void ArrivalListener.onArrtvalAtWaypoint(Waypoint waypoint)
  • Der eine oder die mehreren Ereignislistener 520 können weiterhin eine ETD-Listenerschnittstelle 524 enthalten. Die ETD-Listenerschnittstelle kann aufgerufen werden, um ETD-Information einem Updaten zu unterziehen, wenn eine Entfernung, die übrigbleibt, oder eine Zeit, die übrigbleibt, zu einem nächsten Wegpunkt in der Vielzahl von Wegpunkten einer Mehrfachwegpunkte-Route sich um mehr als eine Schwelle ändert. Die Schwelle kann durch den Entwickler in den Navigatoranweisungen spezifiziert werden. Beispielsweise kann die ETD-Ereignisschnittstelle 524 bei einigen Ausführungsformen mit den Navigatoranweisungen 350 wie folgt registriert sein:
  •  void setRemainingTimeOrDistanceChangedListener(int seconds, in metres, listener)
               /* Registriert einen Listener, um ETD-Updates zu empfangen, zu
               * irgendeiner Zeit, zu der sich ETD zum nächsten Zielort um mehr als
               * Sekunden oder Meter ändert.
               */
     void RemainingTimeOrDistanceChangedListener.onChanged()
     /* Dieser Rückruf wird jedesmal ausgelöst, wenn sich ETD zum
    * nächsten Zielort um mehr als die Schwellen geändert hat, die in
     * setRemainingTimeOrDistanceChangedListener() eingestellt sind.
    */
  • Die Mehrfachwegpunkte-Funktion 510 kann eine Erlangen-ETD-Funktion 514 enthalten. Die Erlangen-ETD-Funktion kann ETD-Information (z. B. übrige Zeit und/oder übrige Entfernung) für einen spezifizierten Wegpunkt entlang einer Mehrfachwegpunkte-Route erhalten. Bei einigen Ausführungsformen kann die Erlangen-ETD-Funktion 514 in den Navigatoranweisungen 350 wie folgt implementiert sein: @Nullable TimeAndDistance getTimeAndDistance(Waypoint waypoint)
  • Die Mehrfachwegpunkte-Funktionen 510 können weiterhin eine Erlangen-nächste-ETD-Funktion enthalten. Die Erlangen-nächste-ETD-Funktion kann ETD-Information (z. B. übrige Zeit und/oder übrige Entfernung) zu einem nächsten Wegpunkt in der Mehrfachwegpunkte-Route zurückbringen. Wenn es keine nächsten Wegpunkte gibt, kann die Funktion Null zurückbringen. Bei einigen Ausführungsformen kann die Erlangen-nächste-ETD-Funktion in den Navigatoranweisungen 350 wie folgt implementiert sein:
  • @Nullable TimeAndDistance getNextTimeAndDistance()
  • Die Ereignislistenerschnittstelle 520 kann weiterhin eine Routegeändert-Ereignislistenerschnittstelle 526 enthalten. Die Route-geändert-Ereignislistenerschnittstelle 526 kann mit den Navigatoranweisungen registriert sein, um Updates zur Verfügung zu stellen, wenn sich eine Mehrfachwegpunkte-Route ändert. Die Route-geändert-Ereignislistenerschnittstelle 526 kann aufgerufen werden, wenn sich irgendein Routensegment einer Mehrfachwegpunkte-Navigationsroute ändert. Beispielsweise kann die Route-geändert-Ereignislistenerschnittstelle 526 aufgerufen werden, wenn sich die anfängliche Mehrfachwegpunkte-Route ändert, wenn der Anwender manuell eine andere Navigationsroute auswählt, etc. Bei einigen Ausführungsformen kann die Routegeändert-Ereignislistenerschnittstelle 526 in den Navigatoranweisungen 350 wie folgt implementiert sein:
  •  void setRouteChangedListener(RouteChangedListener listener)
               /* Registriert einen Listener, um jedesmal benachrichtigt zu werden,
               * wenn sich die Route ändert, wie beispielweise bei der anfänglichen
               * Routenkonfiguration vom Server, jedesmal, wenn der Fahrer vom
               * Kurs abweicht, wenn der Fahrer manuell eine alternative Route durch
               * Antippen von ihr auf dem Bildschirm auswählt. Dies wird ausgelöst
               * werden, wenn sich irgendein Segment der Route ändert.
               */
     RouteChangedListener.onRouteChanged()
               /* Dieser Rückruf wird ausgelöst, wenn sich die Route ändert (wie es
               * oben definiert ist).
               */
  • Bei einigen Ausführungsformen ist die ETD-Information (z. B. TimeAndDistance) ein unveränderbarer Typ. Beispielsweise kann TimeAndDistance wie folgt implementiert sein:
  •  public interface TimeAndDistance {
              /* Die Zahl von Metern von der aktuellen Position zu diesem Wegpunkt.
    
               */
               public in getMeters();
    
              /* Die geschätzte Zahl von Sekunden vor einem Ankommen bei diesem
              * Wegpunkt.
              */
              public int getSeconds();
     }
  • Die Mehrfachwegpunkte-Funktionen 510 können Erlangen-Routensegment-Funktionen 516 enthalten. Die Erlangen-Routensegment-Funktionen können eine Erlangen-aktuelles-Routensegment-Funktion enthalten, um ein aktuelles Routensegment zum nächsten Wegpunkt zurückzubringen, eine Listen-Routensegment-Funktion, um alle Routensegmente in einer Mehrfachwegpunkte-Navigationsroute aufzulisten, und eine Erlangen-gereistes-Routensegment-Funktion, um Routensegmente zu erlangen, über die bereits in der Mehrfachwegpunkte-Navigationsroute gereist ist. Bei einigen Ausführungsformen können die Erlangen-Routensegment-Funktionen wie folgt implementiert sein:
  •  @Nullable RouteSegment getCurrentRouteSegment()
               /* Bringt die aktuelle Teilstrecke der Reise zurück. Dieses
               * RouteSegment wird seine Startposition als die zuallerletzt bekannte
               * Position der Vorrichtung haben. Wenn es kleinen Zielort gibt, wird es
               * zu Null zurückkehren.
               */
     List<RouteSegment> getRouteSegment()
               /* Bringt eine Liste von RouteSegments in der Reise zurück. Das erste
               * RouteSegment wird das sein, was durch getCurrentRouteSegment()
               * zurückgebracht worden wäre, gefolgt durch RouteSegments
               * entsprechend jedem nicht erreichten Zielort. Es wird garantiert, dass
               * die Breitengrad/Längengrad-Listen für aufeinanderfolgende
               * RouteSegments mit demselben Wert starten und enden.
               */
     List<LatLng> getTravelledRoute()
               /* Bringt die Route zurück, über die während dieser Navigationssession
               * gereist ist (da der letzte Aufruf zu startGuidance() ), erzeugt von von
     * der Straße abgegriffenen bzw. aufgenommenen
     * Lokalisierungsupdates, und vereinfacht, um redundante Stellen zu
     * entfernen (z.B. Ersetzen von aufeinanderfolgenden kolinearen Stellen
     * mit einem einzelnen Liniensegment).
     */
  • Bei einigen Ausführungsformen kann RouteSegment ein unabänderbarer Typ sein. Beispielsweise kann RouteSegment wie folgt implementier sein:
  •  public interface RouteSegment {
               /* Der Zielort, an welchem dieses Routensegment endet.
               */
               Public Waypoint getDestinationWaypoint();
               /* Der Breitengrad/Längengrad, an welchem dieses Routensegment
               * endet. Dies wird im Allgemeinen nicht mit dem Wegpunkt
               * übereinstimmen, solange der Wegpunkt nicht direkt auf der Straße
               * positioniert ist.
               */
               public LatLng getDestinationLatLng();
    
              /* Die Route selbst.
              */
               public List<LatLng> getLatLngs();
     }
  • Die Ereignislistenerschnittstelle 520 kann weiterhin eine Lokalisierungslistenerschnittstelle 528 enthalten. Die Lokalisierungslistenerschnittstelle 528 kann ähnlich der Lokalisierungslistenerschnittstelle 362 sein, die unter Bezugnahme auf 6 diskutiert ist. Die Lokalisierungslistenerschnittstelle 528 kann konfiguriert sein, um (z. B. durch die Navigatorschnittstelle) aufgerufen werden, um eine aktuelle Lokalisierung eines Anwenders in dem Navigationsdienst einem Updaten zu unterziehen. Auf diese Weise kann der Navigationsdienst die aktuelle Lokalisierung des Anwenders entlang einer Mehrfachwegpunkte-Navigationsroute anzeigen, wenn die aktuelle Lokalisierung des Anwenders einem Updaten unterzogen ist.
  • Die hierin diskutierte Technologie nimmt Bezug auf Server, Datenbanken, Softwareanwendungen und andere computerbasierte Systeme, sowie Aktionen, die vorgenommen werden, und Information, die zu und von solchen Systemen gesendet wird. Fachleute auf dem Gebiet werden erkennen, dass die innewohnende Flexibilität von computerbasierten Systemen eine große Vielfalt von möglichen Konfigurationen, Kombinationen und Aufteilungen von Aufgaben und Funktionalität zwischen und unter den Komponenten zulässt. Beispielsweise können hierin diskutierte Serverprozesse unter Verwendung eines einzelnen Servers oder mehrerer Server, die in Kombination arbeiten, implementiert sein. Datenbanken und Anwendungen können auf einem einzelnen System oder über mehrere Systeme verteilt implementiert sein. Verteilte Komponenten können sequentiell oder parallel arbeiten.
  • Gemäß Ausführungsformen sind Navigations-Anwendungsprogrammierungsschnittstellen zur Verfügung gestellt, die dazu verwendet werden können, Navigationsdienste in Softwareanwendungen einzubetten. Bei einer Ausführungsform enthält die Anwendungsprogrammierungsschnittstelle eine erste Gruppe von Anweisungen, die einen oder mehrere erste Parameter spezifizieren, um die Implementierung eines Navigationsdienstes durch die Softwareanwendung zu steuern. Der Navigationsdienst kann einem Anwender der Softwareanwendung Navigationsinformation zur Verfügung stellen. Die Anwendungsprogrammierungsschnittstelle kann eine zweite Gruppe von Anweisungen enthalten, die einen oder mehrere zweite Parameter spezifiziert, um eine Interaktion mit einer Schnittstelle zu steuern. Die Anwendungsprogrammierungsschnittstelle kann weiterhin eine Wegpunkte-Funktion enthalten, die als Teil der ersten Anweisungen spezifiziert ist, die betreibbar sind, um eine Vielzahl von Wegpunkten für eine Navigationsroute einzustellen. Die Anwendungsprogrammierungsschnittstelle kann betreibbar sein, um eine Mehrfachwegpunkte-Navigationsroute zu empfangen, die basierend auf der Vielzahl von Wegpunkten bestimmt ist.
  • Während der vorliegende Gegenstand in Bezug auf spezifische beispielhafte Ausführungsformen davon detailliert beschrieben worden ist, wird es so eingeschätzt, dass Fachleute auf dem Gebiet auf ein Erreichen eines Verstehens des Vorangehenden hin ohne weiteres Abänderungen an, Variationen von und Äquivalente zu solchen Ausführungsformen produzieren können. Demgemäß ist der Schutzumfang der vorliegenden Offenbarung eher beispielhaft als beschränkend und die Fachgebietsoffenbarung verhindert kein Enthaltensein von solchen Modifikationen, Variationen und/oder Hinzufügungen zu dem vorliegenden Gegenstand, wie es Fachleuten auf dem Gebiet ohne weiteres klar sein würde.
  • Claims (16)

    1. Nichtflüchtiges computerlesbares Medium, das Anweisungen speichert, die eine Anwendungsprogrammierungsschnittstelle zum Bereitstellen eines Navigationsdienstes als Teil einer auf einer Computervorrichtung ausgeführten Softwareanwendung implementieren, wobei die Computervorrichtung einen oder mehrere Prozessoren und eine Anzeigevorrichtung hat, wobei die Computervorrichtung konfiguriert ist, um mit einem Navigationsdatenprovider über ein Kommunikationsnetzwerk zu kommunizieren, wobei die Anwendungsprogrammierungsschnittstelle folgendes aufweist: eine erste Gruppe von Anweisungen, die einen oder mehrere erste Parameter spezifizieren, um die Implementierung eines Navigationsdienstes durch die Softwareanwendung zu steuern, wobei der Navigationsdienst betreibbar ist, um einem Anwender der Softwareanwendung Navigationsinformation zur Verfügung zu stellen; eine zweite Gruppe von Anweisungen, die einen oder mehrere zweite Parameter spezifizieren, um eine Interaktion mit einer durch den Navigationsdatenprovider zur Verfügung gestellten Navigations-Engine über die Anwendungsprogrammierungsschnittstelle zu steuern, um die als Teil des Navigationsdienstes zur Verfügung gestellte Navigationsinformation zu erhalten; und eine Wegpunkte-Funktion, die als Teil der ersten Anweisungen spezifiziert ist, die betreibbar sind, um eine Vielzahl von Wegpunkten für eine Navigationsroute einzustellen; wobei die Anwendungsprogrammierungsschnittstelle betreibbar ist, um eine Mehrfachwegpunkte-Navigationsroute zu empfangen, die basierend auf der Vielzahl von Wegpunkten bestimmt ist, wobei die Mehrfachwegpunkte-Navigationsroute eine Vielzahl von Routensegmenten aufweist, wobei die erste Gruppe von Anweisungen eine Fortsetzung-zum-nächsten-Zielort-Funktion aufweist, wobei die Fortsetzung-zum-nächsten-Zielort-Funktion betreibbar ist, um aufgerufen zu werden, um zu einem Navigieren zu einem zweiten Wegpunkt in der Mehrfachwegpunkte-Route gehörende Navigationsinformation zu erhalten, wenn ein Anwender bei einem ersten Wegpunkt in der Mehrfachwegpunkte-Route angekommen ist, wobei die erste Gruppe von Anweisungen eine oder mehrere konfigurierbare Ereignislistenerschnittstellen spezifizieren, wobei die eine oder mehreren konfigurierbaren Ereignislistenerschnittstellen eine übrige-Zeit-oder-übrige-Entfernung-geändert-Listenerschnittstelle aufweisen, die betreibbar ist, um aufgerufen zu werden, wenn eine übrige Zeit oder eine übrige Entfernung zu einem nächsten Wegpunkt in der Mehrfachwegpunkt-Navigationsroute sich um mehr als eine Schwelle geändert hat, wobei die Schwelle als ein Parameter in der ersten Gruppe von Anweisungen spezifiziert ist, wobei die konfigurierbaren Ereignislistenerschnittstellen betreibbar sind, um zu einem oder mehreren Navigationsereignissen gehörende Daten zu erhalten, um die als Teil des Navigationsdienstes zur Verfügung gestellte Navigationsinformation einem Updaten zu unterziehen.
    2. Nichtflüchtiges computerlesbares Medium nach Anspruch 1, wobei die Wegpunkte-Funktion konfiguriert ist, um Daten zu empfangen, die die Vielzahl von Wegpunkten als eine Liste von Wegpunkten anzeigen.
    3. Nichtflüchtiges computerlesbares Medium nach einem der vorangehenden Ansprüche, wobei die eine oder mehreren konfigurierbaren Ereignislistenerschnittstellen eine Lokalisierungslistenerschnittstelle aufweisen, die betreibbar ist, um aufgerufen zu werden, um eine aktuelle Lokalisierung eines Anwenders in dem Navigationsdienst einem Updaten zu unterziehen.
    4. Nichtflüchtiges computerlesbares Medium nach einem der vorangehenden Ansprüche, wobei die eine oder mehreren konfigurierbaren Ereignislistenerschnittstellen eine Routegeändert-Listenerschnittstelle aufweisen, die betreibbar ist, um aufgerufen zu werden, wenn sich eines der Vielzahl von durch die Navigations-Engine bestimmten Routensegmenten ändert.
    5. Nichtflüchtiges computerlesbares Medium nach einem der vorangehenden Ansprüche, wobei die Anwendungsprogrammierungsschnittstelle eine Erlangen-übrige-Zeit-oder-übrige-Entfernung-Funktion aufweist, die betreibbar ist, um eine geschätzte Zeit, die übrig ist, oder eine Entfernung, die übrig ist, zu einem spezifizierten Wegpunkt der Vielzahl von Wegpunkten zurückzubringen.
    6. Nichtflüchtiges computerlesbares Medium nach einem der vorangehenden Ansprüche, wobei die Anwendungsprogrammierungsschnittstelle eine Erlangen-Routensegment-Funktion aufweist, die betreibbar ist, um ein oder mehrere Routensegmente in der Mehrfachwegpunkte-Navigationsroute zurückzubringen.
    7. Nichtflüchtiges computerlesbares Medium nach einem der vorangehenden Ansprüche, wobei die Anwendungsprogrammierungsschnittstelle eine Erlangen-gereiste-Route-Funktion aufweist, die betreibbar ist, um Routensegmente der Mehrfachwegpunkte-Route zurückzubringen, die durch einen Anwender bereits bereist sind.
    8. Nichtflüchtiges computerlesbares Medium nach einem der vorangehenden Ansprüche, wobei die Anwendungsprogrammierungsschnittstelle eine dritte Gruppe von Anweisungen aufweist, die einen oder mehrere dritte Parameter spezifizieren, um die Anzeige einer grafischen Anwenderschnittstellenkomponente, die zum Navigationsdienst gehört, auf der Anzeigevorrichtung in Verbindung mit der Softwareanwendung zu steuern.
    9. Nichtflüchtiges computerlesbares Medium nach Anspruch 8, wobei die dritte Gruppe von Anweisungen die Anzeige einer durch die Navigations-Engine bestimmte Mehrfachwegpunkte-Navigationsroute in einem Linienzug auf einer Karte spezifiziert, wenn sie in einem Navigationsmode ist.
    10. Nichtflüchtiges computerlesbares Medium nach Anspruch 8 oder 9, wobei die dritte Gruppe von Anweisungen die Anzeige einer Ansicht von oben nach unten einer Karte spezifiziert, wenn sie nicht in einem Navigationsmode ist.
    11. Verfahren zum Integrieren eines Navigationsdienstes als Teil einer Softwareanwendung auf einer Computervorrichtung mit einem oder mehreren Prozessoren, wobei das Verfahren folgendes aufweist: Zugreifen auf Daten, die zu einer Navigations-Anwendungsprogrammierungsschnittstelle gehören; Eingliedern der zu der Navigations-Anwendungsprogrammierungsschnittstelle gehörenden Daten in die Softwareanwendung; Bilden einer grafischen Anwenderschnittstellenkomponente, die zum Navigationsdienst gehört, unter Verwendung einer ersten Gruppe von Anweisungen, die zu der Navigations-Anwendungsprogrammierungsschnittstelle gehören, wobei die erste Gruppe von Anweisungen einen oder mehrere Parameter spezifiziert, um die Anzeige der grafischen Anwenderschnittstellenkomponente, die zum Navigationsdienst gehört, auf der Anzeigevorrichtung in Verbindung mit einer Softwareanwendung zu steuern; und Konfigurieren des Navigationsdienstes unter Verwendung einer zweiten Gruppe von Anweisungen, die zur Navigations-Anwendungsprogrammierungsschnittstelle gehören, wobei die zweite Gruppe von Anweisungen einen oder mehrere Parameter spezifiziert, um die Implementierung des Navigationsdienstes durch die Softwareanwendung zu steuern; wobei die zweite Gruppe von Anweisungen eine Wegpunkt-Funktion aufweist, die betreibbar spezifiziert ist, um eine Vielzahl von Wegpunkten für eine Mehrfachwegpunkte-Navigationsroute einzustellen, die basierend auf der Vielzahl von Wegpunkten bestimmt ist, wobei die Mehrfachwegpunkte-Navigationsroute eine Vielzahl von Routensegmenten aufweist, wobei die erste Gruppe von Anweisungen eine Fortsetzung-zum-nächsten-Zielort-Funktion aufweist, wobei die Fortsetzung-zum-nächsten-Zielort-Funktion betreibbar ist, um aufgerufen zu werden, um zu einem Navigieren zu einem zweiten Wegpunkt in der Mehrfachwegpunkte-Route gehörende Navigationsinformation zu erhalten, wenn ein Anwender bei einem ersten Wegpunkt in der Mehrfachwegpunkte-Route angekommen ist, wobei die erste Gruppe von Anweisungen eine oder mehrere konfigurierbare Ereignislistenerschnittstellen spezifizieren, und wobei die eine oder mehreren konfigurierbaren Ereignislistenerschnittstellen eine übrige-Zeit-oder-übrige-Entfernung-geändert-Listenerschnittstelle aufweisen, die betreibbar ist, um aufgerufen zu werden, wenn eine übrige Zeit oder eine übrige Entfernung zu einem nächsten Wegpunkt in der Mehrfachwegpunkte-Route sich um mehr als eine Schwelle geändert hat, wobei die Schwelle als ein Parameter in der ersten Gruppe von Anweisungen spezifiziert ist, wobei die konfigurierbaren Ereignislistenerschnittstellen betreibbar sind, um zu einem oder mehreren Navigationsereignissen gehörende Daten zu erhalten, um die als Teil des Navigationsdienstes zur Verfügung gestellte Navigationsinformation einem Updaten zu unterziehen.
    12. Verfahren nach Anspruch 11, wobei das Verfahren folgendes aufweist: Erhalten eines Zugriffsschlüssels zum Freigeben eines Betriebs der Navigations-Anwendungsprogrammierungsschnittstelle; und Hinzufügen des Zugriffsschlüssels zur Softwareanwendung.
    13. Verfahren nach Anspruch 11 oder 12, wobei das Verfahren ein Initialisieren der Navigations-Anwendungsprogrammierungsschnittstelle unter Verwendung einer Gruppe von Initialisierungs- und Fehlerhandhabungsanweisungen aufweist, die zur Navigations-Anwendungsprogrammierungsschnittstelle gehören.
    14. Verfahren nach Anspruch 11, 12 oder 13, wobei die eine oder mehreren konfigurierbaren Ereignislistenerschnittstellen eine Lokalisierungslistenerschnittstelle aufweisen, die betreibbar ist, um aufgerufen zu werden, um eine aktuelle Lokalisierung eines Anwenders in dem Navigationsdienst einem Updaten zu unterziehen.
    15. Verfahren nach Anspruch 11 wobei ein Konfigurieren des Navigationsdienstes unter Verwendung der zweiten Gruppe von Anweisungen ein Einstellen der Schwelle als Parameter in der zweiten Gruppe von Anweisungen aufweist.
    16. Computervorrichtung, die folgendes aufweist: eine Anzeigevorrichtung; eine Netzwerkschnittstelle; einen oder mehrere Prozessoren; und eine oder mehrere Speichervorrichtungen, wobei die eine oder mehreren Speichervorrichtungen computerlesbare Anweisungen speichern, die eine Anwendungsprogrammierungsschnittstelle implementieren, die durch eine Softwareanwendung aufgerufen wird, um Navigationsinformation von einem Navigationsdatenprovider zu erhalten, um einen Navigationsdienst als Teil der Softwareanwendung zur Verfügung zu stellen, wobei die Anweisungen folgendes aufweisen: eine erste Gruppe von Anweisungen, die einen oder mehrere erste Parameter spezifizieren, um die Implementierung eines Navigationsdienstes durch die Softwareanwendung zu steuern, wobei der Navigationsdienst einem Anwender der Softwarenwendung Navigationsinformation zur Verfügung stellt, wobei die erste Gruppe von Anweisungen eine Wegpunktschnittstelle aufweist, die konfiguriert ist, um eine Vielzahl von Wegpunkten für eine Navigationsroute einzustellen; eine zweite Gruppe von Anweisungen, die einen oder mehrere zweite Parameter spezifizieren, um eine Interaktion mit einer durch den Navigationsdatenprovider zur Verfügung gestellten Navigations-Engine über die Anwendungsprogrammierungsschnittstelle zu steuern, um die als Teil des Navigationsdienstes zur Verfügung gestellte Navigationsinformation zu erhalten; eine dritte Gruppe von Anweisungen, die einen oder mehrere dritte Parameter spezifizieren, um die Anzeige einer grafischen Anwenderschnittstellenkomponente, die zum Navigationsdienst gehört, auf der Anzeigevorrichtung in Verbindung mit einer Softwareanwendung zu steuern; wobei die Anwendungsprogrammierungsschnittstelle betreibbar ist, um eine Mehrfachwegpunkte-Navigationsroute zu erhalten, die basierend auf der Vielzahl von Wegpunkten bestimmt ist, wobei die Mehrfachwegpunkte-Navigationsroute eine Vielzahl von Routensegmenten aufweist, wobei die erste Gruppe von Anweisungen eine Fortsetzung-zum-nächsten-Zielort-Funktion aufweist, wobei die Fortsetzung-zum-nächsten-Zielort-Funktion betreibbar ist, um aufgerufen zu werden, um zu einem Navigieren zu einem zweiten Wegpunkt in der Mehrfachwegpunkte-Route gehörende Navigationsinformation zu erhalten, wenn ein Anwender bei einem ersten Wegpunkt in der Mehrfachwegpunkte-Route angekommen ist, wobei die erste Gruppe von Anweisungen eine oder mehrere konfigurierbare Ereignislistenerschnittstellen spezifizieren, und wobei die eine oder mehreren konfigurierbaren Ereignislistenerschnittstellen eine übrige-Zeit-oder-übrige-Entfernung-geändert-Listenerschnittstelle aufweisen, die betreibbar ist, um aufgerufen zu werden, wenn eine übrige Zeit oder eine übrige Entfernung zu einem nächsten Wegpunkt in der Mehrfachwegpunkte-Route sich um mehr als eine Schwelle geändert hat, wobei die Schwelle als ein Parameter in der ersten Gruppe von Anweisungen spezifiziert ist, wobei die konfigurierbaren Ereignislistenerschnittstellen betreibbar sind, um zu einem oder mehreren Navigationsereignissen gehörende Daten zu erhalten, um die als Teil des Navigationsdienstes zur Verfügung gestellte Navigationsinformation einem Updaten zu unterziehen.
    DE102016124474.0A 2016-03-25 2016-12-15 Navigations-anwendungsprogrammierungsschnittstelle zum unterbringen einer mehrfachwegpunkte-führung Active DE102016124474B4 (de)

    Applications Claiming Priority (2)

    Application Number Priority Date Filing Date Title
    US15/080,683 2016-03-25
    US15/080,683 US10061625B2 (en) 2016-03-25 2016-03-25 Navigation application programming interface to accommodate multiple waypoint routing

    Publications (2)

    Publication Number Publication Date
    DE102016124474A1 DE102016124474A1 (de) 2017-09-28
    DE102016124474B4 true DE102016124474B4 (de) 2024-02-08

    Family

    ID=57570650

    Family Applications (2)

    Application Number Title Priority Date Filing Date
    DE202016008227.3U Active DE202016008227U1 (de) 2016-03-25 2016-12-15 Navigations-Anwendungsprogrammierungsschnittstelle zum Unterbringen einer Mehrfachwegpunkte-Führung
    DE102016124474.0A Active DE102016124474B4 (de) 2016-03-25 2016-12-15 Navigations-anwendungsprogrammierungsschnittstelle zum unterbringen einer mehrfachwegpunkte-führung

    Family Applications Before (1)

    Application Number Title Priority Date Filing Date
    DE202016008227.3U Active DE202016008227U1 (de) 2016-03-25 2016-12-15 Navigations-Anwendungsprogrammierungsschnittstelle zum Unterbringen einer Mehrfachwegpunkte-Führung

    Country Status (6)

    Country Link
    US (1) US10061625B2 (de)
    EP (1) EP3374868A1 (de)
    CN (1) CN107229386A (de)
    DE (2) DE202016008227U1 (de)
    GB (1) GB2548948B (de)
    WO (1) WO2017164943A1 (de)

    Families Citing this family (7)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US10352717B2 (en) * 2017-02-28 2019-07-16 Google Llc Navigation application programming interface
    US20190042986A1 (en) * 2017-08-03 2019-02-07 Google Inc. Application Programming Interface for Vehicle Routing Applications
    US10553119B1 (en) 2018-10-04 2020-02-04 Allstate Insurance Company Roadside assistance system
    US20200182635A1 (en) * 2018-12-06 2020-06-11 Nuance Communications, Inc. Automatically determining waypoints along a route of travel
    US11598639B2 (en) * 2019-05-20 2023-03-07 Schlumberger Technology Corporation System for offsite navigation
    CN111078220B (zh) * 2019-12-19 2023-04-21 浪潮云信息技术股份公司 一种前端状态变更管理的实现方法及系统
    USD953371S1 (en) 2021-10-22 2022-05-31 BioReference Health, LLC Display screen or portion thereof with animated graphical user interface

    Family Cites Families (18)

    * Cited by examiner, † Cited by third party
    Publication number Priority date Publication date Assignee Title
    US6901594B1 (en) * 1999-04-23 2005-05-31 Nortel Networks Ltd. Apparatus and method for establishing communication between applications
    US20010034754A1 (en) * 2000-03-17 2001-10-25 Elwahab Amgad Mazen Device, system and method for providing web browser access and control of devices on customer premise gateways
    US7228225B1 (en) * 2002-09-18 2007-06-05 Garmin Ltd. Methods and systems to interface navigation operations
    WO2006039660A2 (en) * 2004-10-01 2006-04-13 Networks In Motion, Inc. Off board navigation solution
    US9409052B2 (en) * 2008-10-03 2016-08-09 Adidas Ag Program products, methods, and systems for providing location-aware fitness monitoring services
    EP2360958B1 (de) 2010-02-12 2015-03-25 Accenture Global Services Limited Überwachung eines mobilen Netzwerks durch QoS-Messungen
    KR20120067830A (ko) 2010-12-16 2012-06-26 한국전자통신연구원 모바일 웹 지도 서비스 시스템 및 이를 위한 서비스 단말
    US9542241B2 (en) 2011-07-12 2017-01-10 Harman International Industries, Incorporated Navigation application interface
    US20130231889A1 (en) * 2012-03-01 2013-09-05 Lockheed Martin Corporation Method and apparatus for an inertial navigation system
    US20140101249A1 (en) * 2012-07-10 2014-04-10 Mark Lampe Systems and Methods for Managing and Presenting Information
    US8849942B1 (en) 2012-07-31 2014-09-30 Google Inc. Application programming interface for prefetching map data
    US20140114565A1 (en) 2012-10-22 2014-04-24 Adnan Aziz Navigation of a vehicle along a path
    US8886460B1 (en) 2012-11-29 2014-11-11 Google Inc. Mobile device navigation state application programming interface
    US20150088642A1 (en) 2013-09-26 2015-03-26 Mastercard International Incorporated Intelligent shopping cart service
    US10785172B2 (en) * 2014-05-23 2020-09-22 Verizon Patent And Licensing Inc. Method and apparatus for delivering messages based on user activity status
    US20160054137A1 (en) * 2014-08-20 2016-02-25 Tomtom International B.V. Navigation device with enhanced widgets and applications
    US9756139B2 (en) * 2014-12-30 2017-09-05 Facebook, Inc. Executing requests for services using shared location data
    FR3046273B1 (fr) * 2015-12-23 2018-10-12 Thales Architecture ouverte pour systeme de gestion de vol

    Non-Patent Citations (3)

    * Cited by examiner, † Cited by third party
    Title
    "How to" for the Android SDK; skobbler; 2016, S. 1 – 36. URL: http://developer.skobbler.com/getting-started/android Archiviert in http://www.archive.org am 16.03.16 [abgerufen am 01.11.2022]
    Index; skobbler; 2015, S. 1 – 53. URL: http://developer.skobbler.com/docs/android/2.5.1/index-all.html Archiviert in http://www.archive.org am 06.12.15 [abgerufen am 01.11.2022]
    Release Notes; skobbler; 2015, S. 1 – 8. URL: http://developer.skobbler.com/release-notes Archiviert in http://www.archive.org am 27.10.15 [abgerufen am 01.11.2022]

    Also Published As

    Publication number Publication date
    GB2548948B (en) 2021-12-29
    US10061625B2 (en) 2018-08-28
    DE102016124474A1 (de) 2017-09-28
    GB201621255D0 (en) 2017-01-25
    CN107229386A (zh) 2017-10-03
    US20170277578A1 (en) 2017-09-28
    GB2548948A (en) 2017-10-04
    WO2017164943A1 (en) 2017-09-28
    EP3374868A1 (de) 2018-09-19
    DE202016008227U1 (de) 2017-06-06

    Similar Documents

    Publication Publication Date Title
    DE102016124474B4 (de) Navigations-anwendungsprogrammierungsschnittstelle zum unterbringen einer mehrfachwegpunkte-führung
    DE60318845T2 (de) Verfahren, das es einem drahtlosen informationsgerät ermöglicht, auf aufenthaltsdaten zuzugreifen
    DE102017125058A1 (de) Navigationsanwendungsprogrammierschnittstelle
    DE102008052460A1 (de) Fahrzeugnavigationssystem mit Echtzeit-Verkehrsabbildungsanzeige
    EP1789755B1 (de) Informationspunkt
    DE202014103884U1 (de) Navigationsvorrichtung mit verbesserten Widgets und Anwendungen
    DE202016008228U1 (de) Navigations-Anwendungsprogrammierungsschnittstelle
    DE112005000198T5 (de) Suchdatenaktualisierungsverfahren und Suchdatenaktualisierungssystem
    DE112020001255T5 (de) Tiefes neurales netzwerk mit niedrigem leistungsverbrauch zur gleichzeitigen objekterkennung und semantischen segmentation in bildern auf einem mobilen rechengerät
    DE102011075305A1 (de) Verfahren zum rechnergestützten Verarbeiten von elektronisch gespeicherten Kalenderdaten
    DE112015006692T5 (de) Plattform zum Bewerten und Teilen von routenspezifischen Daten
    WO2019068827A1 (de) Verfahren zum betrieb eines navigationssystems
    Al-Majhad et al. A traffic congestion framework for smart riyadh city based on iot services
    DE202023100616U1 (de) System zur Optimierung der Tourismusplanung
    EP3384242A1 (de) System und verfahren zur indoor - navigation
    DE102011015216A1 (de) Visualisierung von Adresspunkten auf Karten
    DE102021100250A1 (de) Durch crowdsourcing erhaltene navigationssysteme und -verfahren
    DE112007003328T5 (de) Navigationssystem und Anzeigeverfahren eines Straßennetzes auf demselben System
    EP3076129B1 (de) Bereitstellen von zusatzlandkartendaten für eine offroad-strecke mit einer navigationseinrichtung
    DE102008014610A1 (de) Verfahren zum Betreiben eines Multimediasystems und Multimediasystem
    DE102021128251A1 (de) Anzeigen einer Route mit einem Mobilgerät
    EP2607851A1 (de) Verfahren zum Betreiben einer Navigationseinrichtung mit separat aktualisierbaren Geschwindigkeitsdaten
    DE102018212455A1 (de) Verfahren und Vorrichtung zur Bereitstellung von Navigationsinformation
    DE102006040493A1 (de) Verfahren und Vorrichtungen sowie Computerprogramm zur Erfassung und Nutzung richtungsbezogener Information eines Objekts

    Legal Events

    Date Code Title Description
    R012 Request for examination validly filed
    R138 Derivation of utility model

    Ref document number: 202016008227

    Country of ref document: DE

    R081 Change of applicant/patentee

    Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

    Free format text: FORMER OWNER: GOOGLE INC., MOUNTAIN VIEW, CALIF., US

    R082 Change of representative

    Representative=s name: KILBURN & STRODE LLP, GB

    Representative=s name: KILBURN & STRODE LLP, NL

    Representative=s name: BETTEN & RESCH PATENT- UND RECHTSANWAELTE PART, DE

    R082 Change of representative

    Representative=s name: KILBURN & STRODE LLP, GB

    Representative=s name: KILBURN & STRODE LLP, NL

    R082 Change of representative

    Representative=s name: KILBURN & STRODE LLP, NL

    R016 Response to examination communication
    R018 Grant decision by examination section/examining division