KR20220018098A - 내비게이션 애플리케이션 프로그래밍 인터페이스 - Google Patents

내비게이션 애플리케이션 프로그래밍 인터페이스 Download PDF

Info

Publication number
KR20220018098A
KR20220018098A KR1020227003323A KR20227003323A KR20220018098A KR 20220018098 A KR20220018098 A KR 20220018098A KR 1020227003323 A KR1020227003323 A KR 1020227003323A KR 20227003323 A KR20227003323 A KR 20227003323A KR 20220018098 A KR20220018098 A KR 20220018098A
Authority
KR
South Korea
Prior art keywords
class
map
navigation
navigator
function
Prior art date
Application number
KR1020227003323A
Other languages
English (en)
Other versions
KR102480786B1 (ko
Inventor
조셉 로렌스 스카르
루크 데이비드 맥퍼슨
제이콥 알렉산더 시미오나토
Original Assignee
구글 엘엘씨
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 구글 엘엘씨 filed Critical 구글 엘엘씨
Publication of KR20220018098A publication Critical patent/KR20220018098A/ko
Application granted granted Critical
Publication of KR102480786B1 publication Critical patent/KR102480786B1/ko

Links

Images

Classifications

    • 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
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • 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/3635Guidance using 3D or perspective road maps
    • 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
    • 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
    • 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/0484Interaction techniques based on graphical user interfaces [GUI] for the control of specific functions or operations, e.g. selecting or manipulating an object, an image or a displayed text element, setting a parameter value or selecting a range
    • G06F3/04847Interaction techniques to control parameter settings, e.g. interaction with sliders or dials
    • 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/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • 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/451Execution arrangements for 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications

Landscapes

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

Abstract

제3자 소프트웨어 애플리케이션에서 내비게이션 정보를 획득하는 데 사용될 수 있는 내비게이션 애플리케이션 프로그래밍 인터페이스가 제공된다. 하나의 예시적인 구현에서, API(application programming interface)는 내비게이터 클래스와 연관된 제1 명령어 세트를 포함할 수 있다. 내비게이터 클래스는 소프트웨어 애플리케이션에 의한 내비게이션 서비스의 구현을 제어하기 위한 복수의 함수를 특정할 수 있다. 내비게이션 서비스는 소프트웨어 애플리케이션의 사용자에게 내비게이션 정보를 제공할 수 있다. API는 내비게이터 델리게이트 프로토콜과 관련된 제2 명령어 세트를 포함할 수 있다. 내비게이터 델리게이트 프로토콜은 내비게이터 클래스의 델리게이트가 될 수 있다. 내비게이터 델리게이트 프로토콜은 내비게이션 서비스의 일부로 제공되는 내비게이션 정보를 업데이트하기 위해 하나 이상의 호출을 구현할 수 있다.

Description

내비게이션 애플리케이션 프로그래밍 인터페이스{NAVIGATION APPLICATION PROGRAMMING INTERFACE}
본 명세서는 일반적으로 내비게이션 정보를 획득하기 위해 iOS 디바이스에 구현된 소프트웨어 애플리케이션을 위한 애플리케이션 프로그래밍 인터페이스에 관한 것이다.
모바일 컴퓨팅 장치(예: 스마트폰, 태블릿, 스마트 시계 등)와 같은 컴퓨팅 장치에서 구현된 애플리케이션은 비즈니스, 소셜, 건강 및 기타 목적을 포함하여 다양한 목적으로 개발되었다. 이들 애플리케이션은 정보를 사용자에게 제시하고 사용자가 애플리케이션과 상호 작용할 수 있도록 하는 사용자 인터페이스(예를 들어, 그래픽 사용자 인터페이스)를 제공할 수 있다. 모바일 컴퓨팅 장치를 위한 대중적인 애플리케이션은 사용자가 다양한 지리적 정보(예를 들어, 지도상에 제시된 현재 위치 정보)를 이용할 수 있게 하는 맵 애플리케이션을 포함한다.
애플리케이션 프로그래밍 인터페이스는 컴퓨팅 장치에 구현된 애플리케이션이 다양한 서비스와 상호 작용하여 사용자에게 정보와 기능을 제공할 수 있도록 한다. 애플리케이션 프로그래밍 인터페이스는 사용자가 액세스할 수 있도록 정보, 프로그래밍, 서비스, 프레임워크 및 구조를 애플리케이션에 쉽게 포함시킬 수 있는 개발자를 위한 도구를 제공할 수 있다.
본 명세서의 실시 형태의 양태 및 장점은 다음의 설명에서 부분적으로 설명될 것이거나, 그 설명으로부터 학습될 수도 있고, 또는 실시 형태의 실시를 통해 학습될 수도 있다.
본 명세서의 일 예시적인 양태는 iOS 운영 체제를 구현하는 iOS 컴퓨팅 장치에서 실행되는 소프트웨어 애플리케이션에 대한 내비게이션 정보를 획득하기 위한 애플리케이션 프로그래밍 인터페이스(Application Programming Interface)를 구현하는 것을 포함하는 컴퓨터 프로그램 제품(예를 들어, 명령어들을 저장하는 비-일시적 컴퓨터 판독 가능 매체와 같이, 선택적으로 비 일시적 형태로 저장되지 않고 통신 네트워크를 통해 다운로딩되는 프로그램을 포함하는) 에 관한 것이다. 컴퓨팅 장치는 하나 이상의 프로세서 및 디스플레이 장치를 가질 수 있다. 애플리케이션 프로그래밍 인터페이스는 내비게이터 클래스와 연관된 제1 명령어(명령) 세트를 포함할 수 있다. 내비게이터 클래스는 소프트웨어 애플리케이션에 의한 내비게이션 서비스의 구현을 제어하기 위한 복수의 기능을 특정할 수 있다. 내비게이션 서비스는 소프트웨어 애플리케이션의 사용자에게 내비게이션 정보를 제공할 수 있다. API는 내비게이터 델리게이트(delegate) 프로토콜과 관련된(연관된) 제2 명령어 세트를 포함할 수 있다. 내비게이터 델리게이트 프로토콜은 내비게이터 클래스의 델리게이트가 될 수 있다. 내비게이터 델리게이트 프로토콜은 내비게이션 서비스의 일부로 제공되는 내비게이션 정보를 업데이트하기 위해 하나 이상의 호(call)들을 구현할 수 있다.
본 명세서의 제1 특정 표현은 iOS 운영 플랫폼을 구현하는 iOS 컴퓨팅 장치에서 실행되는 소프트웨어 애플리케이션에 대한 내비게이션 정보를 획득하기 위한 애플리케이션 프로그래밍 인터페이스를 구현하는 명령어들을 포함하는 컴퓨터 프로그램 제품이며, 컴퓨팅 장치는 하나 이상의 프로세서 및 디스플레이 장치를 가지며, 상기 애플리케이션 프로그래밍 인터페이스는, 내비게이터 클래스와 관련된 제1 명령어 세트-상기 내비게이터 클래스는 소프트웨어 애플리케이션에 의해 내비게이션 서비스의 구현을 제어하기 위한 복수의 기능들을 특정하고, 상기 내비게이션 서비스는 소프트웨어 애플리케이션의 사용자에게 내비게이션 정보를 제공하며, 상기 기능들은 내비게이션 시작, 내비게이션 정지, 카메라 각도 변경 및 경로의 디스플레이중 하나 이상을 포함함-; 그리고 내비게이터 델리게이트 프로토콜과 관련된 제2 명령어 세트를 포함하며, 상기 내비게이터 델리게이트 프로토콜은 내비게이터 클래스의 델리게이트이고, 내비게이터 델리게이트 프로토콜은 내비게이션 서비스의 일부로서 제공된 내비게이션 정보를 업데이트하기 위한 하나 이상의 호들을 구현한다.
본 명세서의 제2 특정 표현은 하나 이상의 프로세서들을 갖는 iOS 컴퓨팅 장치에서 내비게이션 애플리케이션 프로그래밍 인터페이스를 사용하여 소프트웨어 애플리케이션의 일부로서 내비게이션 서비스를 통합하는 방법으로서, 컴퓨팅 장치는 iOS 운영 체제를 구현하며, 상기 방법은,
하나 이상의 프로세서들에 의해, 맵을 디스플레이하기 위해 맵 뷰 클래스를 인스턴스화하는 단계; 상기 하나 이상의 프로세서들에 의해, 내비게이션 애플리케이션 프로그래밍 인터페이스의 일부로서 특정된 내비게이터 클래스의 하나 이상의 인스턴스들을 생성하는 단계; 상기 하나 이상의 프로세서들에 의해, 내비게이터 클래스의 인스턴스를 상기 맵에 바인딩하여 상기 맵과 함께 경로 및 턴-바이-턴(turn-by-turn) 방향을 디스플레이하는 단계; 그리고 상기 하나 이상의 프로세서들에 의해, 내비게이션 애플리케이션 프로그래밍 인터페이스를 사용하여 내비게이션 서비스를 구현하는 단계를 포함한다.
본 발명의 제3 특정 표현은 다음을 포함하는 iOS 운영 체제를 구현하는 컴퓨팅 장치이며, 이는 디스플레이 장치; 하나 이상의 프로세서들; 그리고 하나 이상의 메모리 장치들을 포함하며, 상기 하나 이상의 메모리 장치들은 소프트웨어 애플리케이션의 일부로서 내비게이션 서비스를 제공하기 위해 내비게이션 정보를 획득하도록 소프트웨어 애플리케이션에 의해 호출된 애플리케이션 프로그래밍 인터페이스를 구현하는 컴퓨터 판독 가능 명령어들을 저장하며, 상기 명령어들은 내비게이터 클래스와 관련된 제1 명령어 세트 -상기 내비게이터 클래스는 소프트웨어 애플리케이션에 의한 내비게이션 서비스의 구현을 제어하기 위해 복수의 기능들을 특정하며, 상기 내비게이션 서비스는 소프트웨어 애플리케이션의 사용자에게 내비게이션 정보를 제공하고, 상기 기능들은 내비게이션 시작, 내비게이션 정지, 카메라 각도 변경, 경로의 디스플레이 중 하나 이상을 포함함-; 내비게이터 델리게이트 프로토콜과 관련된 제2 명령어 세트 -상기 내비게이터 델리게이트 프로토콜은 내비게이터 클래스의 델리게이트이며, 상기 네비게이터 델리게이트 프로토콜은 내비게이션 서비스의 일부로서 제공된 내비게이션 정보를 업데이트하기 위해 하나 이상의 호들을 구현함-; 그리고 UI 설정(settings) 클래스와 관련된 제3 명령어 세트를 포함하며, 상기 UI 설정 클래스는 소프트웨어 애플리케이션에 의해 제시된 내비게이션 서비스와 관련된 사용자 인터페이스를 제어하기 위해 하나 이상의 파라미터들을 특정하며, 상기 내비게이터 클래스는 상기 맵 뷰 클래스의 인스턴스와 연관된 맵과 함께 내비게이션 경로를 디스플레이하기 위해 맵 뷰 클래스의 인스턴스의 제어기로서 구성된다.
본 명세서의 다른 예시적인 양태는 시스템, 장치, 컴퓨터 프로그램 제품 (예를 들어, 유형의 비 일시적 컴퓨터 판독 가능 매체), 사용자 인터페이스, 메모리 장치, 및 내비게이션 정보를 제공하기 위한 애플리케이션 프로그래밍 인터페이스와 관련된 전자 장치에 관한 것이다.
다양한 실시 예의 이들 및 다른 특징, 양태 및 장점은 다음의 설명 및 첨부된 청구 범위를 참조하여 더 잘 이해 될 것이다. 본 명세서에 포함되어 본 명세서의 일부를 구성하는 첨부 도면은 본 명세서의 실시 예를 예시하고, 상세한 설명과 함께 관련 원리를 설명하는 역할을 한다.
본 기술 분야의 통상의 기술자를 대상으로 하는 실시 예들의 상세한 설명은 첨부된 도면을 참조하여 본 명세서에서 설명된다.
도 1은 본 명세서의 예시적인 실시 예들에 따른 애플리케이션 프로그래밍 인터페이스를 사용하여 소프트웨어 애플리케이션의 일부로서 내비게이션 서비스를 구현하기 위한 예시적인 시스템의 개요를 도시한다.
도 2는 본 명세서의 예시적인 실시 예들에 따라 소프트웨어 애플리케이션을 구현하는 예시적인 사용자 장치의 블록도를 도시한다.
도 3은 본 명세서의 예시적인 실시 예들에 따른 예시적인 방법의 흐름도를 도시한다.
도 4는 본 명세서의 예시적인 실시 예들에 따른 예시적인 내비게이션 애플리케이션 프로그래밍 인터페이스를 도시한다.
도 5는 본 명세서의 예시적인 실시 예에 따른 내비게이터 클래스와 관련된 예시적인 제1 명령어 세트를 도시한다.
도 6은 본 명세서의 예시적인 양태에 따른 내비게이터 델리게이트 프로토콜과 관련된 예시적인 제2 명령어 세트를 도시한다.
도면에 예시된 하나 이상의 예시인 구현에 대한 세부적인 참조가 이루어질 것이다. 각각의 예는 본 명세서의 제한이 아닌 실시 예를 설명하기 위해 제공된다. 실제로, 본 명세서의 범위 또는 사상을 벗어나지 않으면서 실시 예들에 대해 다양한 수정 및 변형이 이루어질 수 있다는 것이 당업자에게 명백할 것이다. 예를 들어, 일 실시 예의 일부로서 도시되거나 설명된 특징은 다른 실시 예와 함께 사용되어 또 다른 실시 예를 생성할 수 있다. 따라서, 본 명세서의 양태는 이러한 수정 및 변형을 포함하는 것으로 의도된다.
본 명세서의 예시적인 양태는 (예를 들어, iOS 운영 체제를 사용하여) iOS 운영 플랫폼에 구현된 하나 이상의 컴퓨팅 장치에 구현된 소프트웨어 애플리케이션에서 내비게이션 정보를 제공하기 위한 애플리케이션 프로그래밍 인터페이스("API")들에 관한 것이다. iOS 운영 플랫폼은 모바일 장치용으로 만들어진 모바일 운영 체제이다. 본 명세서에서 사용되는 "iOS 컴퓨팅 장치"는 iOS 운영 체제를 구현하는 컴퓨팅 장치를 의미한다.
일부 실시 예에서, 내비게이션 API는 애플리케이션 개발자들이 내비게이션 데이터 제공자 또는 다른 소스에 의해 제공된 내비게이션 경험을 그들의 소프트웨어 애플리케이션에 임베드할 수 있게 한다. API를 통해 개발자는 다양한 플랫폼과 최종 사용 사례를 수용할 수 있도록 내비게이션 경험을 쉽게 사용자화(customize)하고 조정(tailor)할 수 있다.
보다 구체적으로, API는, iOS 컴퓨팅 장치상에 구현된 소프트웨어 애플리케이션에 의해 호출될 때, 데이터 제공자(예를 들어, 원격 데이터 제공자 또는 iOS 컴퓨팅 장치에 로컬로 저장된 데이터 제공자)로부터 라우팅 정보를 요청 및 수신하도록 구성될 수 있다. API는 소프트웨어 애플리케이션에 내장된 내비게이션 서비스를 제공하기 위해 라우팅 정보에 기초하여 내비게이션 정보(예를 들어, 그래픽 사용자 인터페이스 컴포넌트를 통해 또는 오디오 및/또는 진동 큐(vibratory cue)를 통해)를 제시하도록 구성될 수 있다.
내비게이션 서비스는 사용자를 출발지에서 목적지로 안내하는 데 사용할 수 있는 내비게이션 정보를 제공하는 애플리케이션(예: 소프트웨어 애플리케이션)일 수 있다. 일부 실시 예들에서, 소프트웨어 애플리케이션에 내장된 내비게이션 서비스는 사용자가 내비게이션 경로 또는 다른 경로를 따라 주행함에 따라 내비게이션 정보(예를 들어, 턴 바이 턴 내비게이션 정보)를 사용자에게 제공할 수 있다. 보다 구체적으로, 일부 실시 예들에서, 내비게이션 서비스는 사용자를 현재 위치에서 목적지로 안내하는 경로를 수신할 수 있다. 일례로서, 경로는 경로 부분(예를 들어, 도로의 명칭 또는 번호, 거리, 이동 시간, 속도 제한) 및 다음 경로 부분에 액세스하기 위한 기동(maneuver)(예를 들어, 좌회전, 우회전, 직진)을 기술하는 스텝들의 시퀀스를 포함할 수 있다. 내비게이션 서비스는 사용자를 출발지에서 목적지로 안내하기 위해 그래픽 사용자 인터페이스 및 하나 이상의 큐(예를 들어, 오디오 또는 비디오 큐)를 통해 사용자에게 경로를 제공할 수 있다.
일부 실시 예들에서, 소프트웨어 애플리케이션은 API를 통해 내비게이션 데이터 제공자 또는 다른 소스(예를 들어, 내비게이션 정보의 로컬 소스)에 의해 구현된 라우팅 엔진(경로 엔진)과 상호 작용하여 라우팅(경로) 정보 및 다른 내비게이션 정보를 획득할 수 있다. 내비게이션 데이터 제공자는 소프트웨어 애플리케이션의 개발자와 관련하여 별도의 엔티티와 연관될 수 있다. 예를 들어, 내비게이션 데이터 제공자는 지리 정보 시스템을 호스팅하는 웹 서버와 연관될 수 있다. 내비게이션 정보는 하나 이상의 웨이포인트(waypoint)로의 경로를 포함할 수 있다. 내비게이션 정보는 경로 및 다른 정보와 함께 프리젠테이션을 위한 맵(지도) 데이터를 더 포함할 수 있다. 사용자가 내비게이션 경로를 주행하여 사용자에게 실시간 또는 거의 실시간 내비게이션 경험을 제공함에 따라 내비게이션 정보는 (예를 들어, API의 일부로서 구현된 하나 이상의 이벤트 리스너(listener) 인터페이스를 통해) 지속적으로 업데이트될 수 있다.
소프트웨어 애플리케이션에 의해 구현될 때 API는 소프트웨어 애플리케이션과 함께 디스플레이되는 그래픽 사용자 인터페이스 컴포넌트에서 내비게이션 서비스와 관련된 내비게이션 정보를 시각적으로 제시할 수 있다. 예를 들어, 그래픽 사용자 인터페이스 컴포넌트는 맵을 디스플레이할 수 있다. 내비게이션 모드 동안에, 그래픽 사용자 인터페이스 컴포넌트는 맵에 폴리라인(polyline)으로 경로를 디스플레이할 수 있다. 사용자가 경로를 내비게이팅(탐색)할 때 경로를 따라 사용자의 위치를 업데이트할 수 있다. 예를 들어, 내비게이션 서비스는 사용자 위치가 내비게이션 경로를 따라 변함에 따라 사용자의 위치가 내비게이션 경로를 따라 지속적으로 업데이트되는 그래픽 사용자 인터페이스를 제공할 수 있다. 다양한 웨이포인트(waypoint)는 맵에 있는 마커로 식별할 수 있다. 웨이포인트에 도착하기까지 남은 예상 시간(잔여 예상 시간) 또는 거리("ETD 정보"), 나침반 인터페이스 요소, 내비게이션 헤딩 요소 등과 같은 다른 정보가 그래픽 사용자 인터페이스 컴포넌트에 제시될 수 있다. 일부 실시 예들에서, 내비게이션 정보는 그래픽 사용자 인터페이스 컴포넌트 내 내비게이션 정보의 시각적 디스플레이 없이 또는 이와 함께 오디오 안내를 사용하여 제공될 수 있다.
본 명세서의 특정 양태에 따르면, API는 하나 이상의 프로세서에 의해 실행될 때 내비게이션 경험을 개발자의 소프트웨어 애플리케이션으로 통합하는 것을 용이하게 하는 컴퓨터 판독 가능 명령어 세트를 포함할 수 있다. 하나 이상의 프로세서에 의해 구현될 때, 상기 명령어 세트는 소프트웨어 애플리케이션의 일부로서 사용자에게 내비게이션 정보의 디스플레이 및/또는 전달뿐만 아니라 API를 통해 내비게이션 데이터 제공자와 소프트웨어 애플리케이션에 의한 상호 작용을 통제(제어)할 수 있다.
보다 구체적으로, 소프트웨어 애플리케이션의 개발자가 직면하고 있는 API와 관련된 예시적인 명령어(명령)는 내비게이션 서비스의 시각적 출력의 디스플레이를 제어하는 하나 이상의 파라미터를 특정하는 명령어 세트를 포함할 수 있다. API는 내비게이션 서비스의 구현을 제어하는 하나 이상의 파라미터를 특정(지정)하는 명령어 세트 및 내비게이션 데이터 제공자에 의해 제공된 라우팅 엔진과 API의 상호 작용을 제어하는 명령어 세트를 더 포함할 수 있다. 본 명세서의 특정 양태에 따르면, 내비게이션 API는 복수의 메인 클래스 및 프로토콜을 포함하는 개발자용 API를 포함할 수 있다. 클래스는 API와 관련된 이용 약관 및/또는 라이센스 정보를 제공하기 위한 유틸리티 기능을 포함할 수 있는 내비게이션 서비스 클래스를 포함할 수 있다. 클래스는 내비게이터 클래스를 포함할 수 있다. 내비게이터 클래스는 프로그래밍 방식으로 내비게이션을 제어하는 기능(functions)(이하 명세서에서 기재된 기능은 함수를 포함함)을 제공하는 싱글톤일 수 있다. 상기 기능은, 예를 들어, 하나 이상의 경로 디스플레이, 내비게이션 시작, 내비게이션 정지 및 카메라 각도 변경을 포함할 수 있다. 일부 실시 예에서, API는 UI 요소와 관련된 설정을 특정하기 위해 개발자에 의해 사용될 수 있는 UI 설정 클래스를 포함할 수 있다.
일부 실시 예들에서, API는 내비게이터 델리게이트 프로토콜을 포함할 수 있다. 내비게이터 델리게이트 프로토콜은 내비게이터 클래스의 델리게이트로 특정될 수 있다. 내비게이터 델리게이트 프로토콜은 내비게이션 관련 콜백(예: 위치 업데이트, 남은 시간(잔여 시간) 및/또는 남은 거리(잔여 거리) 업데이트 등)을 특정할 수 있다.
일부 실시 예들에서, 내비게이션 API는 맵 애플리케이션 프로그래밍 인터페이스와 기능을 더 사용하거나 공유할 수 있다. 맵 애플리케이션 프로그래밍 인터페이스는 맵 뷰 클래스를 포함하여 카메라 팔로우 기능을 제공할 수 있다. 일부 실시 예들에서, 상기 카메라 팔로우 기능은 내비게이터 클래스의 인스턴스화 여부에 관계없이 사용될 수 있다.
일부 실시 예들에서, 내비게이터 클래스와 맵 뷰 클래스 사이의 관계는 내비게이션 API가 별도의 맵 API의 일부로서 특정된 맵 뷰 클래스의 기능의 하나 이상의 양태를 재사용하거나 구현할 수 있도록 특정될 수 있다. 일부 실시 예에서, 내비게이터 클래스는 맵과 함께 경로 및 내비게이션 사용자 인터페이스 요소를 디스플레이하기 위해 기존 맵 뷰 클래스의 인스턴스를 제어할 수 있다. 일부 실시 예들에서, 맵 뷰 클래스는 내비게이터 클래스로 래핑(wrapped)될 수 있다.
본 명세서의 양태는 복수의 기술적 효과 및 장점을 제공할 수 있다. 예를 들어, API를 사용하면 내비게이션 서비스를 개발자의 소프트웨어 애플리케이션에 쉽게 통합할 수 있다. 내비게이션 정보(예: 위치 업데이트, 남은 시간(잔여 시간) 및/또는 남은 거리(잔여 거리) 업데이트 등)를 얻기 위해 콜백에 대한 델리게이트 프로토콜의 사용은 iOS 운영 플랫폼 환경에서의 구현을 용이하게 할 수 있다. 콜백이 소프트웨어 애플리케이션이 아닌 API에 의해 수행된다는 사실은 시스템의 보안 및 신뢰성을 향상시킨다(예: API 개발자는 신뢰할 수 있고 소프트웨어 애플리케이션 개발자에게 공개할 필요가 없는 통신을 위한 보안 프로토콜을 구현할 수 있다). 내비게이터 클래스와 맵 뷰 클래스 사이의 관계는 내비게이션 API가 맵 드로잉, 교통 정보 표시, 수동 카메라 각도 설정, 마커 추가 등과 같은 기능을 제공하는 기존 맵 API와 기능을 공유하도록 하는 것일 수 있다. API는 탑승 공유 애플리케이션, 운송/배달 애플리케이션, 소셜 애플리케이션 및 기타 최종 사용 애플리케이션과 같은 다양한 최종 용도 요구에 맞게 내비게이션 서비스를 사용자 지정할 수 있다.
본 명세서의 양태는 클래스, 함수(기능), 속성 및 프로토콜 이름을 지칭한다(예를 들어, 내비게이터 클래스, 내비게이터 델리게이트 프로토콜, UI 설정 클래스, 위치 업데이트 함수, 웨이포인트 도달 함수, 경로 변경 함수, 남은 시간 업데이트 함수, 목적지 설정 함수, 맵 뷰 클래스, 내비게이션 웨이포인트 클래스, 내비게이션 맵 클래스 등을 지칭). 본원에 제공된 개시를 사용하여 당업자는 클래스 이름이 단지 식별 목적으로 제공되고 본 개시의 범위를 제한하려는 것이 아님을 이해할 것이다. 예를 들어, 내비게이터 클래스는 이름에 관계없이 여기에 설명된 내비게이터 클래스의 하나 이상의 앙태를 포함하는 임의의 클래스일 수 있다.
도 1은 본 명세서의 예시적인 실시 예들에 따른 내비게이션 API를 사용하여 소프트웨어 애플리케이션의 일부로서 내비게이션 서비스를 구현하기 위한 예시적인 시스템(100)의 개요를 도시한다. 시스템(100)은 통신 네트워크(116)를 통해 내비게이션 데이터 제공자(114)로부터 내비게이션 데이터를 수신할 수 있는 사용자 장치(112)를 포함할 수 있다. 사용자 장치(112)는 예를 들어 스마트폰, 태블릿, 웨어러블 장치, 랩톱, 데스크톱, 모바일 장치, 동작 중에 사용자가 휴대할 수 있는 장치, 하나 이상의 프로세서, 차량 시스템 또는 다른 사용자 장치(112)일 수 있다.
소프트웨어 애플리케이션(120)은 사용자 장치(112) 상에 구현될 수 있다. 소프트웨어 애플리케이션은, 예를 들어 맵핑 애플리케이션, 브라우저, 라이드 쉐어(ride share) 애플리케이션, 전달을 돕는데 사용되는 애플리케이션, 소셜 미디어 애플리케이션 또는 사용자에게 내비게이션 정보를 제공해야 하는 다른 소프트웨어 애플리케이션일 수 있다. 소프트웨어 애플리케이션(120)은 사용자 장치(112) 상에 로컬로 저장될 수 있거나, 예를 들어, 사용자 장치(112) 상에 구현된 브라우저를 통해 액세스되는 웹 애플리케이션일 수 있다. 일부 실시 예에서, 소프트웨어 애플리케이션(120)은 내비게이션 데이터 제공자(114)와 연관된 엔티티와 독립적이고 및/또는 제휴하지 않는 제3자 엔티티에 의해 개발될 수 있다.
소프트웨어 애플리케이션(120)은 내비게이션 서비스가 소프트웨어 애플리케이션(120)에 내장될 수 있도록 내비게이션 서비스(NAV API)(130)를 호출하여 통신 네트워크(116)를 통해 내비게이션 데이터 제공자(114)로부터 내비게이션 데이터에 액세스하고 이를 제공할 수 있다. 본 명세서의 예시적인 양태들은 예시 및 설명을 위해 원격 내비게이션 데이터 제공자(114)로부터 데이터에 액세스하는 것으로 설명된다. 본원에 제공된 개시를 사용하여 당업자는 API(130)가 사용자 장치(112) 상에 위치한 로컬 소스 또는 애플리케이션과 같은 다른 소스로부터의 데이터에 액세스할 수 있음을 이해할 것이다.
내비게이션 서비스는 사용자 장치(112)를 휴대하는 사용자 또는 차량이 출발지로부터 하나 이상의 목적지까지의 경로를 따라 이동할 때 내비게이션 정보(예를 들어, 턴 바이 턴 내비게이션 정보)를 실시간 또는 거의 실시간으로 사용자에게 제시할 수 있다. 내비게이션 서비스는 하나 이상의 디스플레이 장치에서 사용자에게 네비게이션 정보를 제시하기 위한 그래픽 사용자 인터페이스 컴포넌트를 포함할 수 있다. 또한, 내비게이션 서비스는 내비게이션 정보(예를 들어, 턴 바이 턴 지시)를 나타내는 오디오 안내 또는 다른 통지(예를 들어, 진동 통지)를 사용자에게 제공할 수 있다.
다시 도 1을 참조하면, API(130)는 내비게이션 데이터 제공자(114)에 의해 구현된 라우팅(경로) 엔진(140)과 인터페이싱하도록 구성될 수 있다. 라우팅 엔진(140)은 예를 들어 하나 이상의 웨이포인트에 대한 경로를 연산하고, 매핑 데이터에 액세스하고, 다양한 내비게이션 이벤트를 기반으로 내비게이션 데이터를 업데이트하고 및 API(130)로부터의 내비게이션 데이터에 대한 요청에 응답한다. 일부 실시 예에서, 내비게이션 데이터 제공자(114)는 웹 서버와 같은 하나 이상의 서버를 포함할 수 있다. 하나 이상의 서버는 하나 이상의 프로세서 및 하나 이상의 메모리 장치를 포함할 수 있다. 하나 이상의 메모리 장치는 예를 들어 라우팅 엔진(140)을 구현하기 위해 컴퓨터 판독 가능 명령어를 저장할 수 있다. 일부 실시 예들에서, 라우팅 엔진(140)은 예를 들어 지리 정보 시스템(GIS DATA)(115)과 관련된 데이터에 액세스할 수 있다. 지리 정보 시스템(115)은 그 요소의 지리 좌표에 의해 인덱싱된 데이터를 포함할 수 있다. 지리 정보 시스템(115)과 관련된 데이터는, 예를 들어, 지도 데이터, 경로 데이터, 지리 이미지, 다양한 웨이포인트와 관련된 데이터(예를 들어, 비즈니스 목록 이름, 주소, 지리 좌표 등) 및 기타 데이터를 포함할 수 있다.
애플리케이션(120)은 네트워크(116)를 통한 API(130)를 통해 내비게이션 데이터 제공자(114)와 상호 작용함으로써 내비게이션 서비스를 구현할 수 있다. 네트워크(116)는 로컬 영역 네트워크(예를 들어, 인트라넷), 광역 네트워크(예를 들어 인터넷), 셀룰러 네트워크 또는 이들의 일부 조합과 같은 임의의 유형의 통신 네트워크일 수 있다. 네트워크(116)는 또한 직접 연결(direct connection)을 포함할 수 있다. 일반적으로, 통신은 다양한 통신 프로토콜(예를 들어, TCP/IP, HTTP, SMTP, FTP), 인코딩 또는 포맷(형식)(예를 들어, HTML, XML) 및/또는 보호 체계(예: VPN, 보안 HTTP, SSL)을 사용하는 임의의 유형의 유선 및/또는 무선 연결을 사용하여 네트워크(116)를 통해 전달될 수 있다.
도 2는 본 명세서의 예시적인 실시 예에 따라 내비게이션 API(130)를 구현하도록 구성된 예시적인 사용자 장치(112)를 도시한다. 도시된 바와 같이, 사용자 장치(112)는 명령어 메모리(152), 메모리(152)에 저장된 명령어를 실행하도록 구성된 하나 이상의 프로세서(154), 디스플레이 장치(156), 네트워크 통신을 지원하는 네트워크 인터페이스(158) 및 저장 메모리(160)를 포함한다. 명확성을 위해, 명령어 메모리(152) 및 저장 메모리(160)는 개별적으로 도시되어 있다. 그러나, 컴포넌트(152 및 160)는 또한 동일한 메모리 모듈 내의 영역들일 수 있다는 점이 이해될 것이다. 보다 일반적으로, 사용자 장치(112)는 개별적으로 또는 동일한 칩 또는 보드 상에 제공될 수 있는 하나 이상의 추가 프로세서, 메모리 장치, 네트워크 인터페이스를 포함할 수 있다. 또한, 컴포넌트들(152 및 160)은 영구 메모리(예를 들어, 플래시 메모리), 휘발성 메모리(예를 들어, RAM), 또는 둘 다 또는 다른 적절한 메모리를 포함할 수 있다.
명령어 메모리(152)는 운영 체제(OS)(170), 내비게이션 API(130) 및 소프트웨어 애플리케이션(120)의 명령어 세트를 저장할 수 있다. OS(170)는 모바일 장치용으로 특별히 개발된 모바일 OS일 수 있다. 이와 같이, OS(170)는 소프트웨어 애플리케이션이 무선 네트워크 파라미터(예를 들어, 무선 네트워크의 아이덴티티, 서비스 품질)와 같은 데이터에 액세스할 수 있게 할 뿐만 아니라 전화(telephony), 위치 결정(예를 들어, GPS(global positioning service) 또는 WLAN을 통한), 무선 네트워크 데이터 통화 발신 등과 같은 서비스를 호출할 수 있게 하는 기능을 포함할 수 있다. 일부 예시적인 구현에서, OS는 iOS 모바일 운영 체제 또는 유사한 운영 체제를 포함하거나 기반으로 한다.
소프트웨어 애플리케이션(120)은 예를 들어 맵핑 애플리케이션, 내비게이션 애플리케이션, 라이드 쉐어 애플리케이션, 전달을 돕는 애플리케이션, 소셜 미디어 애플리케이션 등일 수 있다. 또한, 소프트웨어 애플리케이션(120)은 브라우저 윈도우의 할당된 부분 내에 내비게이션 정보를 디스플레이하기 위해 내비게이션 API(130)를 호출하는 웹 브라우저 애플리케이션일 수 있다. 일반적으로, 내비게이션 API(130)는 사용자 장치(120)상에서 실행되는 임의의 적합한 소프트웨어 애플리케이션에 이용 가능할 수 있다. 또한, 다수의 상이한 소프트웨어 애플리케이션이 내비게이션 API(130)를 호출할 수 있다.
전술한 바와 같이, 소프트웨어 애플리케이션(120)은 내비게이션 API(130)를 호출(invoke)하여 내비게이션 서비스를 소프트웨어 애플리케이션(120)에 임베드(내장)할 수 있다. 예를 들어, 일 예에서, 소프트웨어 애플리케이션(120)은 하나 이상의 웨이포인트를 내비게이션 API(130)에 제공할 수 있다. 내비게이션 API(130)는 하나 이상의 웨이포인트에 기초하여 내비게이션 경로를 결정하기 위해 내비게이션 데이터 제공자(예를 들어, 로컬 또는 원격)로부터 내비게이션 데이터를 요청할 수 있다. 내비게이션 API(130)는 내비게이션 서비스의 일부로서 사용자에게 내비게이션 정보의 프리젠테이션을 제어하기 위한 명령어 세트를 포함할 수 있다. 일부 실시 예에서, 내비게이션 API(130)는 맵 API(135)와 기능을 사용하거나 공유할 수 있다. 예를 들어, 맵 API(135)의 일부로서 제공되는 맵 뷰 클래스는 소프트웨어 애플리케이션(120)의 사용자에게 맵(지도) 기능 및 내비게이션 기능을 제공하기 위해 내비게이션 API(130)와 함께 다양한 방식으로 사용될 수 있다.
일부 실시 예에서, 사용자 장치는 포지셔닝(positioning) 시스템을 포함할 수 있다. 상기 포지셔닝 시스템은 장치의 위치를 결정하기 위한 하나 이상의 장치 또는 회로를 포함할 수 있다. 예를 들어, 포지셔닝 장치는, 셀룰러 타워 또는 WiFi 핫스팟, 비콘 등에 대한 삼각 측량 및/또는 근접거리 및/또는 위치를 결정하기 위한 다른 적절한 기술을 사용함으로써, IP 주소에 기초하여, 위성 내비게이션 포지셔닝 시스템(예, GPS(satellite navigation positioning) 시스템, 갈릴레오 포지셔닝 시스템, GLObal 내비게이션 위성 시스템(GLONASS), BeiDou 위성 내비게이션 및 포지셔닝 시스템), 관성 내비게이션 시스템, 데드 레커닝(dead reckoning) 시스템을 사용하여 실제 또는 상대 위치를 결정할 수 있다.
내비게이션 API(130) 및/또는 맵 API(135)는 하나 이상의 기능, 데이터 구조 등으로 구현될 수 있다. 또한, 내비게이션 API(130) 및/또는 맵 API는 프로세서(들)(154)상에서 직접 실행되는 컴파일된(compiled) 코드, 또는 대안적으로, 애플리케이션(120)에 의해 런타임에 해석되는 스크립팅 언어와 같은 임의의 다른 형태의 명령어를 포함할 수 있다. 일부 실시 예들에서, 명령어들은 적어도 부분적으로 스위프트(Swift) 또는 오브젝티브(Objective) C와 같은 프로그래밍 언어를 사용하여 구현될 수 있다. 하나의 예시적인 구현에서 내비게이션 API(130) 및/또는 맵 API(135)는 개발자가 소프트웨어 애플리케이션(120)의 코드에 포함할 수 있는 여러 기능의 프로토타입(well-documented prototypes) 및 이러한 기능을 구현하는 명령어를 포함한다. 일부 실시 예에서, 내비게이션 API(130) 및/또는 맵 API(134)는 정적 라이브러리로서 개발자에게 제공될 수 있다.
내비게이션 API(130)는 도 2의 맵 API(135)와 별개로 도시되어 있다. 그러나, 일부 실시 예들에서, 내비게이션 API(130)는 전체 맵 API(135)의 기능의 일부로서 포함될 수 있다. 일부 실시 예들에서, 맵 API(135)는 내비게이션 API(130)의 기능의 일부로서 포함될 수 있다.
도 3은 본 명세서의 예시적인 실시 예들에 따른 내비게이션 API를 사용하여 소프트웨어 애플리케이션의 일부로서 내비게이션 서비스를 통합하기 위해 모바일 장치(디바이스)(112)의 프로세서(들)(154)에 의해 수행된 예시적인 방법(300)의 흐름도를 도시한다. 도 3은 예시 및 설명을 위해 특정 순서로 수행되는 단계를 도시한다. 본원에 제공된 개시 내용을 사용하여 당업자는 본원에 제공된 임의의 방법의 다양한 단계가 본 발명의 범위를 벗어나지 않으면서 다양한 방식으로 적응, 확장, 생략, 동시에 수행 및/또는 변형될 수 있음을 이해할 것이다.
단계(302)에서, 방법은 소프트웨어 애플리케이션의 시작시에 서비스 클래스에 API 키를 제공하는 단계를 포함할 수 있다. 서비스 클래스는 맵 API의 서비스 클래스일 수 있다. 서비스 클래스는 맵 API와 서비스 클래스의 인스턴스를 공유하는 공유 서비스 기능(함수)을 포함할 수 있다. 서비스 클래스는 내비게이션 API와 맵 API의 제공자에게 API 키를 제공할 수 있는 API 키 제공 함수(기능)를 포함할 수 있다. 서비스 클래스는 라이센스 정보를 리턴하도록 구성된 라이센스 함수(기능)를 추가로 포함할 수 있다. 서비스 클래스는 맵 API 릴리스의 버전을 리턴하도록 구성된 버전 함수(version function)를 포함할 수 있다.
단계(304)에서, 방법은 뷰 제어기에서 맵 뷰 클래스를 인스턴스화하고 이를 뷰 계층(hierarchy)에 추가하는 단계를 포함할 수 있다. 이로 인해 마커와 폴리라인을 추가할 수 있는 맵이 디스플레이될 수 있다.
단계 (306)에서, 내비게이션 API와 연관된 내비게이터 클래스의 내비게이터 인스턴스가 생성될 수 있다. 내비게이터 클래스에 대한 자세한 내용은 아래에 제공된다. 그 다음, 내비게이터는 맵에 바인딩되어 경로 및 턴 바이 턴 방향이 디스플레이된다(308 단계). 그 다음, 내비게이션 API를 사용하여 내비게이션 서비스를 구현할 수 있다. 예를 들어, 내비게이션 경로는 예를 들어 라우팅 엔진(510)으로부터 획득될 수 있다. 상기 경로가 패치되면(fetched) 그 경로는 맵에 디스플레이될 수 있다. 내비게이션 모드는 사용자가 경로를 따라 이동할 때 카메라 변경 및 턴 바이 턴 방향이 디스플레이 될때 진입(enter)될 수 있다(312). 목적지에 도달하거나 내비게이션 모드가 종료될 때까지 내비게이션을 계속할 수 있다(314).
위 방법의 구현 예는 이하와 같다.
/*
MyAppDelegate.mm
*/
- ( BOOL ) application :( UIApplication *) application
didFinishLaunchingWithOptions :( NSDictionary *) launchOptions {
[ GMSServices provideAPIKey : kAPIKey ];
}
/*
MyAppNavigationViewController.mm
*/
@interface MyAppNavigationViewController ()<
GMSNavigatorDelegate,
GMSUIControllerNavigationDelegate >
@end
@implementation MyNavigationViewController {
GMSMapView *_mapView;
GMSNavigator *_navigator;
}
- (void) loadView {
// Construct a map
_mapView = [GMSMapView mapWithFrame : CGRectZero];
_mapView.delegate = self;
self.view = _mapView;
// Request the navigator with a callback. Terms and conditions will be displayed.
__weak typeof (self) *weakSelf = self;
[ GMSNavigationServices showTermsAndConditionsDialog :^(BOOL result) {
typeof (self) *strongSelf = weakSelf;
if (result && strongSelf) {
[self fetchNavigator]
} else {
// Terms were rejected. Exit the view.
}
}];
}
/*
Fetches the shared navigator instance and configures the navigation map and UI.
*/
*- (void) fetchNavigator {
// Request the navigator.
_navigator = [[Navigator alloc] init];
_navigator.delegate = strongSelf;
// Configure UI settings
GMSUISettings *settings = _mapView.settings;
settings.navigation Header = NO;
settings.trafficIncidentCards = NO;
settings.delegate = self;
// Take control of the map
_mapView.navigator = _navigator;
}
/*
Shows the route to the destination when a new job is received.
*/
- (void) newJobIsAvailableToCoordinate :(CLLocationCoordinate2D) coordinate) {
GMSNavigationWaypoint *destination =
[[GMSNavigationWaypoint alloc] initWithCoordinate : coordinate];
[ _navigator setDestinationsWithWaypoints : @[destination]
options : [GMSRoutingOptions defaultOptions]
callback : ^(RouteStatus routeStatus) {
if (routeStatus == kRouteStatusOk) {
_mapView.cameraMode = kGMSNavigationCameraModeRouteOverview;
}
}];
}
/*
Enters navigation mode.
*/
- (void) acceptJobButtonWasPressed {
_navigator.guidanceEnabled = YES;
_mapView.cameraMode = kGMSNavigationCameraModeFollowing;
}
@end
도 4는 본 명세서의 예시적인 실시 예에 따른 내비게이션 API(130)와 관련된 예시적인 명령어 세트의 블록도를 도시한다. 도시된 바와 같이, 내비게이션 API (130)는 내비게이션 서비스 클래스(402), UI 설정 클래스(404), 내비게이터 클래스(410) 및 내비게이터 델리게이트(440)를 포함할 수 있다. API(130)는 다른 클래스들/프로토콜들(406)을 포함할 수 있다. 내비게이션 서비스 클래스(402), UI 설정 클래스(404), 내비게이터 클래스(410), 및 내비게이터 델리게이트(440) 및 예시적인 구현에 사용될 수 있는 다른 클래스/프로토콜에 관한 세부 사항은 아래에 제공된다.
내비게이션 서비스 클래스(402)는 내비게이션 API(130)에 대한 일반적인 방법을 노출시킬 수 있다. 내비게이션 서비스 클래스(402)는 내비게이션 API(130)에 대한 서비스 클래스일 수 있다. 내비게이션 서비스 클래스(402)는 사용자가 이용 약관에 동의했는지 여부를 리턴하는 이용 약관 수락 기능, 사용자가 아직 동의하지 않은 경우 이용 약관을 표시하는 기능이 필요한 경우 이용 약관 표시 및 내비게이션 API에 대한 소프트웨어 라이센스 정보를 리턴하는 라이센스 정보 기능(함수)을 포함하는 SPM(static public member) 함수를 포함할 수 있다.
내비게이션 서비스 클래스(402)의 예시적인 구현이 아래에 제공된다.
/**
* Called when the user accepts or rejects the terms and conditions.
*/
typedef void (^GMSTermsResponseCallback)(BOOL result);
/**
* Provides utility methods for the Navigation SDK.
*/
@interface GMSNavigationServices : NSObject
/**
* Prompts the user with a dialog containing the terms and conditions for use of
* the Navigation SDK.
*/
+ (void) showTermsAndConditionsDialogOnViewController :(UIViewController*)controller
callback :(GMSTermsResponseCallback) callback ;
/**
* Checks if the terms and conditions have been accepted by the user.
*/
+ (BOOL) termsHaveBeenAccepted ;
/**
* Returns the open source software license information for Google Maps SDK for
* iOS. This information must be made available within your application.
*/
+ (NSString *) openSourceLicenseInfo ;
/**
* Returns the version for this release of the Google Navigation SDK for iOS.
*/
+ (NSString *) SDKVersion;
@end
내비게이터 클래스(410)는 내비게이션 기능의 제어기일 수 있으며, 경로는 맵과 함께 디스플레이될 수 있고, 내비게이션을 시작하고 중지할 수 있으며, 카메라 각도 변경 등이 가능하다. 일부 실시 예에서, 내비게이터 클래스(410)는 경로 및 턴 바이 턴 방향이 디스플레이되도록 맵 뷰 클래스의 인스턴스를 제어할 수 있다. 일부 실시 예들에서, 내비게이터 클래스(410)는 사용자 인터페이스에서 어떤 맵도 보이지 않고 내비게이션 업데이트(예를 들어, 위치, ETA)를 제공하기 위해 사용될 수 있다. 내비게이터 클래스(410)는 싱글톤(singleton)일 수 있다. 일부 실시 예에서, 내비게이터 클래스(410)는 서브클래스를 지원하지 않는다. 모든 방법은 메인 스레드에서 호출할 수 있다.
도 5는 본 명세서의 예시적인 실시 예들에 따른 예시적인 내비게이터 클래스(410)를 도시한다. 내비게이터 클래스(410)는 복수의 기능을 포함할 수 있다. 예를 들어, 내비게이터 클래스(410)는 내비게이션을 위해 다수의 목적지를 설정할 수 있고 이전에 설정된 목적지를 무시할 수 있는 세트 목적지 콜백 기능(412)을 포함 할 수 있다. 콜백은 하나 이상의 목적지에 대한 경로가 발견되면 ok 상태로 호출될 수 있다.
내비게이터 클래스(410)는 현재 목적지 목록으로부터 제1 목적지를 팝(pop)할 수 있는 다음 목적지 계속 기능(continue to next destination function)(414)을 포함할 수 있다. 내비게이터 클래스(410)는 이전에 설정된 모든 목적지를 지우고 맵에서 계산된 경로를 제거할 수 있는 목적지 지우기 기능(416)을 포함할 수 있다. 내비게이터 클래스(410)는 소정의 웨이포인트로 예상 시간을 리턴하거나 웨이포인트가 현재 경로의 일부가 아닌 경우 최대값을 리턴할 수 있는 웨이포인트 시간 기능(418)을 포함할 수 있다. 내비게이터 클래스(410)는 소정의 웨이포인트까지의 추정 거리를 리턴하거나 또는 웨이포인트가 현재 경로의 일부가 아닌 경우 최대값을 리턴할 수 있는 웨이포인트 거리 기능(420)을 포함할 수 있다. 내비게이터 클래스(410)는 내비게이터 클래스(410) 상에 현재 설정된 경로를 따라 주행(travel)을 시뮬레이팅할 수 있는 기존의 경로 기능(422)을 따라 시뮬레이션 위치를 포함할 수 있다. 내비게이터 클래스(410)는 시뮬레이션이 활성화된 경우 시뮬레이션을 종료할 수 있는 정지 시뮬레이션 기능(424)을 포함할 수 있다.
일부 실시 예에서, 내비게이터 클래스(410)는 복수의 속성(property)을 포함할 수 있다. 일부 속성은 내비게이터 델리게이트 프로토콜로 업데이트될 수 있다. 상기 속성은 턴 바이 턴 안내가 현재 활성화되어 있는지 여부를 제공할 수 있는 안내 활성 속성(426); 다음 목적지까지의 추정된 시간을 제공할 수 있는 다음 목적지 시간 속성(428); 다음 목적지까지의 추정 거리를 제공할 수 있는 다음 목적지 거리 속성(430); 여행(journey)의 현재 레그(leg)를 제공할 수 있는 현재 루트 레그 속성(432); 각각의 레그가 설정된 목적지에 대응하는 루트 레그의 어레이를 제공할 수 있는 루트 레그 속성(434); 트래픽 및 턴 바이 턴 경보에 대해 음성 안내가 가능해야 하는지 여부를 제공할 수 있는 음성 안내 속성(436); 그리고 음성 경보가 재생될 때 장치가 진동해야 하는지 여부를 결정할 수 있는 진동 활성화 속성(438)을 포함할 수 있다.
내비게이터 클래스(410)의 예시적인 인터페이스는 이하와 같다.
/**
* A GMSRouteStatus is a status code that represents the result of a route
* request.
*/
typedef NS_ENUM (NSInteger, GMSRouteStatus) {
/** A route to the destination was successfully calculated. */
GMSRouteStatusOk = 1,
/** A route to the destination could not be calculated. */
GMSRouteStatusNoRouteFound = 2,
/** A route to the destination could not be calculated because of a network
error. */
GMSRouteStatusNetworkError = 3,
/** A route to the destination could not be calculated because of insufficient
quota. */
GMSRouteStatusQuotaCheckFailed = 4,
/** A route could not be calculated because the provided key does not have
permission to use Navigation SDK. */
GMSRouteStatusAPIKeyNotAuthorized = 5,
/** A route could not be calculated because the Navigation SDK terms and
conditions have not been accepted by the user. */
GMSRouteStatusTermsAndConditionsNotAccepted = 6,
/** The route calculation was cancelled in favor of a newer one. */
GMSRouteStatusCancelled = 7,
/** A route could not be calculated because GPS location was turned off by the
user. */
GMSRouteStatusLocationDisabled = 8,
};
/**
* Called when a route from the user's location to the provided destination(s) is
* found, or fails to be found for a reason indicated by the RouteStatus.
*/
typedef void (^GMSRouteStatusCallback)(GMSRouteStatus routeStatus);
/**
* Allows a navigation sessions to be initiated, controlled and monitored by
* finding a route to destinations, entering navigation mode and providing
* information such as the distance remaining and ETA. The navigator can control a
* GMSMapView on that routes and turn-by-turn directions will be displayed.
*
* This class is a singleton and the shared instance should be obtained using the
* [Navigator sharedNavigator] method.
*/
@interface GMSNavigator : NSObject
/**
* Provides the shared GMSNavigator instance, creating it if necessary. This
* method should only be called after:
* - An API key has already been provided using [GMSServices provideAPIKey:<key>]
* - The Navigation SDK terms and conditions have been displayed and accepted
*
* This method will throw an exception if either of these conditions are not met.
*/
+ (instancetype) sharedNavigator;
+ (instancetype)init;
/**
* Sets the delegate that can receive callbacks from the Navigator due to
* changes in navigation state, e.g. location updates, changes in remaining
* time or distance, or changes in the planned route.
*/
@property(nonatomic, weak) id<GMSNavigatorDelegate> GMS_NULLABLE_PTR delegate;
/**
* Provides access to the GMSNavigationUISettings for this navigator that contains
* methods to configure the appearance of UI elements such as the navigation
* header, footer and compass.
*/
@property (nonatomic, readonly) GMSNavigationUISettings *navigationUISettings;
/**
* Sets the threshold for how much the remaining journey time must change before
* the didUpdateRemainingTimeOrDistance delegate method is called.
*/
@property (nonatomic) NSTimeInterval timeChangedThreshold;
/**
* Sets the threshold for how much the remaining journey distance must change
* before the didUpdateRemainingTimeOrDistance delegate method is called.
*/
@property (nonatomic) CLLocationDistance distanceChangedThreshold;
/**
* Sets that types of audio guidance (including vibration) are enabled. By
* default, vibration, voice, and voice over Bluetooth (if available) are
* enabled.
*/
@property (nonatomic) GMSAudioGuidance audioGuidance;
/**
* Returns the route travelled so far during this guidance session (since the
* last call to startGuidance). The route recorded consists of the road-snapped
* locations as are provided to the GMSNavigatorDelegate, and simplified to
* remove redundant points, for example turning consecutive colinear points into
* a single line segment.
*/
@property (nonatomic, readonly, copy) GMSPath *GMS_NULLABLE_PTR travelledRoute;
/**
* The current leg of the journey. This RouteSegment will have its starting
* position as the most recent known (road-snapped) position of the device.
*/
@property (nonatomic, readonly, copy)
GMSRouteSegment *GMS_NULLABLE_PTR currentRouteSegment;
/**
* An array of route segments where each segment corresponds to a destination
* set by setDestinationsWithWaypoints:options:callback.
*/
@property (nonatomic, readonly, copy)
GMS_NSArrayOf (GMSRouteSegment *) *GMS_NULLABLE_PTR routeSegments;
/**
* The estimated time and distance from the current position to the current
* destination.
*/
@property (nonatomic, readonly, copy) GMSTimeAndDistance *GMS_NULLABLE_PTR
timeAndDistanceToNextDestination;
/**
* An array of times and distances corresponding to each destination in the
* current route, representing the estimated time and distance from the current
* position to each destination.
*/
@property (nonatomic, readonly, copy)
GMS_NSArrayOf (GMSTimeAndDistance *) *GMS_NULLABLE_PTR
timesAndDistances;
/**
* Sets the navigator to control the provided map and stop controlling the previous
* map if there was one. This causes the camera to immediately begin to follow the
* user's location. Some of the map attributes will be overridden whilst the
* navigator is in control, eg the map type will be temporarily changed to normal
* despite the current value of the mapType property.
*
* If navigation is already in progress, the current route will be immediately
* displayed along with turn-by-turn directions.
*/
- (void) startControllingMap : (GMSMapView *) mapView;
/**
* Stops the GMSNavigator from controlling the current GMSMapView, if one is
* currently set. This does not stop navigation. Alerts will continue to be
* generated, and route information, eg distance remaining will continue to be
* calculated.
*
* This causes any map attributes that were overridden during navigation to again
* respect the current property values. Eg, if mapType is set to GMSTypeHybrid,
* then the map will now return to displaying in hybrid mode.
*/
- (void) stopControllingMap;
/**
* * Sets multiple destinations for navigation, overriding any previously set
* destinations.
*
* The provided callback will be called with GMSRouteStatusOk if a route is found
* from the user's location to the given destination. If a new destination is set
* before a route is found, then the request will be cancelled, and the callback
* will be called with GMSRouteStatusCancelled. If a route cannot be found for any
* other reason, the callback will be called with an appropriate error status.
*/
- (void)
setDestinationsWithWaypoints : (GMS_NSArrayOf (GMSNavigationWaypoint *) *)
waypoints
options : (GMSRoutingOptions *) options
callback : (GMSRouteStatusCallback) callback;
/**
* Removes the current destination. Following this call, guidance will be toward
* the next destination, and information about the old destination is not
* available.
*
* @return the waypoint guidance is now heading to, or nil if there were no
* * more waypoints left
*/
- (GMSNavWaypoint *GMS_NULLABLE_PTR) continueToNextDestination;
/**
* Clears all previously set destinations and removes any calculated routes from
* the map. If navigation is running, this will automatically stop it.
*/
- (void) clearDestinations;
/**
* * If a destination has been set and a route computed for it, starts
* turn-by-turn navigation guidance for the route. If a route has not yet been
* computed, turn-by-turn guidance will start once it has.
*/
- (void) startGuidance;
/**
* Stops turn-by-turn navigation guidance.
*/
- (void) stopGuidance;
/**
* Sets the camera to follow the location of the user. This is typically called
* when starting turn-by-turn guidance to enter a "tilted" driving view. It can
* also be used to re-enable camera following after calls to showRouteOverview, or
* the manual camera setter methods of GMSMapView.
*/
- (void) followMyLocationWithPerspective : (GMSNavigationCameraPerspective) perspective;
/**
* Pans and zooms the map to show an overview of the remaining route. This will
* temporarily prevent the camera from following the user's position.
*
* Camera following can be reenabled using followMyLocationWithPerspective.
*/
- (void) showRouteOverview;
@end
도 6을 참조하면, 내비게이터 델리게이트 프로토콜(440)은 내비게이터 클래스(410)의 델리게이트일 수 있다. 내비게이터 델리게이트(440)는 복수의 함수를 포함할 수 있다. 예를 들어, 내비게이터 델리게이트는 사용자의 위치가 업데이트될 때 호출될 수 있는 위치 업데이트 함수(442)를 포함할 수 있다. 내비게이터 델리게이트(440)는 사용자가 내비게이션 웨이포인트(경유지)에 도착했을 때 호출될 수 있는 웨이포인트 도착 함수(444)를 포함할 수 있다. 내비게이터 델리게이트(440)는 현재 경로가 변경되거나 지워질 때 호출될 수 있는 경로 변경 함수(446)를 포함할 수 있다. 내비게이터 델리게이트(440)는 목적지(들)까지의 추정된 시간(들)이 업데이트될 때 호출될 수 있는 잔여 시간 업데이트 함수(448)를 포함할 수 있다. 내비게이터 델리게이트(440)는 목적지까지의 추정 거리(들)가 업데이트될 때 호출될 수 있는 잔여 거리 업데이트 함수(450)를 포함할 수 있다. 내비게이터 델리게이트(440)는 잔여 시간 업데이트 함수(448)가 호출되도록 트리거할 다음 목적지에 대한 추정 시간의 최소 변화를 특정하는 내비게이터 시간 업데이트 임계치 파라미터에 액세스하거나 그 내비게이터 시간 업데이트 임계치 파라미터를 특정할 수 있다. 내비게이터 델리게이트(440)는 잔여 거리 업데이트 함수(450)가 호출되도록 트리거 할 다음 목적지까지의 추정 거리에서의 최소 변화를 특정하는 내비게이터 거리 업데이트 임계치 파라미터에 액세스하거나 그 내비게이터 거리 업데이트 임계치 파라미터를 특정할 수 있다.
내비게이터 델리게이트(440)의 예시적인 구현은 이하와 같다.
@protocol GMSNavigatorDelegate <NSObject>
/**
* Called when the driver's road-snapped location/heading is updated.
* This is provided as frequently as possible by the navigation engine.
*/
- (void) navigator :(GMSNavigator *) navigator
didUpdateLocation :(CLLocation *) location;
/**
* Called when the driver has arrived at a GMSNavigationWaypoint.
*/
- (void) navigator :(GMSNavigator *) navigator
didArriveAtWaypoint :(GMSNavigationWaypoint *) waypoint;
/**
* Called when the route changes. The new route is available through the
* GMSNavigator route segment properties.
*/
- (void) navigatorDidChangeRoute :(GMSNavigator *) navigator;
/**
* Called when the time or distance to the next destination has changed
* by more than the thresholds specified by the timeChangedThresholdSeconds
* and distanceChangedThresholdMeters properties of GMSNavigator.
*/
- (void) navigator :(GMSNavigator *) navigator
didUpdateRemainingTimeOrDistance : (GMSTimeAndDistance *) timeAndDistance;
@end
도 4를 참조하면, UI 설정 클래스(404)는 내비게이션 API(130)와 관련된 UI 설정을 특정하기 위해 사용될 수 있다. UI 설정 클래스(404)는 모든 제스처의 활성화 또는 비활성화 여부에 대한 선호도를 설정하는 모든 제스처 활성화 설정 기능을 포함할 수 있다. UI 설정 클래스는, 스크롤 제스처의 활성화 또는 비활성화 여부를 제어하는 스크롤 제스처 속성; 줌 제스처의 활성화 또는 비활성화 여부를 제어하는 줌 제스처 속성; 틸트 제스처의 활성화 또는 비활성화 여부를 제어하는 틸트 제스처 속성; 회전 제스처의 활성화 또는 비활성화 여부를 제어하는 회전 제스처 속성; 제스처가 활성화될 때 사용자에 의한 제스처가 맵 뷰 클래스에 의해 완전히 컨슈밍(consume)되는지를 제어하는 뷰의 제스처 컨슈밍 속성; 나침반을 활성화 또는 비활성화하는 나침반 버튼 속성; 위치 버튼을 활성화 또는 비활성화하는 위치 버튼 속성; 실내 바닥 피커(indoor floor picker)를 활성화 또는 비활성화하는 실내 피커 속성; 그리고 회전 및 줌 제스처가 중심에서 벗어나 스크롤될수 있는지 여부를 제어하는 회전 또는 줌 동안 스크롤 제스처 허용 속성을 포함할 수 있다.
UI 설정 클래스의 예시적인 구현이 아래에 제공된다.
/**
* A controller that allows different options for the navigation UI to be set.
*/
@interface GMSNavigationUISettings : NSObject
/**
* Sets the delegate that can receive callbacks from the GMSNavigationUISettings
* instance for UI-related events.
*/
@property (nonatomic, weak) id<GMSNavigationUISettingsDelegate> GMS_NULLABLE_PTR delegate;
/**
* Determines whether the turn-by-turn navigation header is visible during
* navigation.
*/
@property (nonatomic) BOOL header;
/**
* Determines whether the ETA card is visible during navigation.
*/
@property (nonatomic) BOOL etaCard;
/**
* Determines whether traffic incident cards should be shown when the user
* clicks on a traffic incident icon.
*/
@property (nonatomic) BOOL trafficIncidentCards;
/**
* Determines whether traffic prompts should be shown. Traffic prompts
* periodically appear to update the user on traffic conditions during
* navigation.
*/
@property (nonatomic) BOOL trafficPrompts;
@end
일부 구현에서, 내비게이션 API(130)는 나이트 모드 콜백을 변경하지 않은 것을 포함하는 UI 설정 델리게이트를 포함할 수 있다. UI 설정 델리게이트의 구현 예는 이하와 같다.
/**
* Represents the different modes that the Navigation UI elements can be in, eg the
* map appearance, header and footer and buttons.
*/
typedef NS_ENUM (NSInteger, GMSNavigationUIMode) {
/** The navigation UI is in the normal, day mode. */
GMSNavigationUINormal = 1,
/** The navigation UI is in night mode that has darker UI styling. */
GMSNavigationUINight = 2,
};
/**
* Delegate for navigation UI events.
*/
@protocol GMSNavigationUISettingsDelegate<NSObject>
@optional
/**
* Called when the navigation UI enters or exits night mode.
*/
- (void) navigationUISettings :(GMSNavigationUISettings *) navigationUISettings
didChangeUIMode :(GMSNavigationUIMode) mode;
@end
도 4를 참조하면, 내비게이션 API(130)는 다른 클래스 및 프로토콜(406)을 포함할 수 있다. 특정 클래스(예를 들어, 맵 API와 관련된 클래스)는 내비게이션 API(130)의 양태에 의해 제어, 호출 또는 랩핑될 수 있다. 다음은 본 명세서의 예시적인 실시 예에 따른 맵(지도) 및 내비게이션 함수를 갖는 API의 예시적인 구현과 함께 사용될 수 있는 클래스 및 프로토콜의 목록이다.
주소 클래스(Address Class): 주소 클래스는 사람이 읽을 수 있는 주소를 포함하는 역 지오코드(reverse geocode) 요청의 결과일 수 있다. 주소 클래스는 변경할 수 없으며 지오코더 클래스를 통해 획득될 수 있다. 주소 클래스에서 필드가 없을 수 있다. 주소 클래스는 주소의 제1 라인을 리턴하는 주소 라인 1 함수와 주소의 제2 라인을 리턴하는 주소 라인 2 함수를 포함하는 공용 멤버(public member) 함수를 포함할 수 있다. 주소 클래스는 위치를 제공하는 좌표 속성; 도로 번호와 이름을 제공하는 도로 속성; 지방 또는 도시를 제공하는 지방 속성; 그리고 지역, 지구 또는 공원의 하위 구역을 제공하는 하위 지역 속성을 포함할 수 있다.
CALayer 클래스: CALayer 클래스는 API의 계층에서 사용하는 수퍼클래스(superclass)일 수 있다. CALayer 클래스는 맵 계층 클래스와 파노라마 계층 클래스로 상속(inherited)될 수 있다.
카메라 위치 클래스(Camera Position Class): 카메라 위치 클래스는 모든 카메라 위치 파라미터를 집계하는 불변(immutable) 클래스일 수 있다. 카메라 위치 클래스는 변경 가능한(가변) 카메라 위치 클래스에 의해 상속될 수 있다. 카메라 위치 클래스는, 지정된 이니셜라이저인 줌, 방위 및 시야각을 갖는 타겟 초기화 함수; 특정 타겟 및 줌 레벨에 대한 카메라 위치 클래스의 간편 구성자(convenience constructor)인 줌을 갖는 타겟 카메라 함수; 입력 줌을 갖는 타겟 카메라 함수에 따라 카메라 위치 클래스의 간편 구성자인 경도 및 줌 함수가 있는 위도 카메라 함수; 줌, 방위 및 시야각의 입력을 갖는 타겟 초기화 함수에 따라 모든 카메라 속성을 갖는 카메라 위치 클래스의 간편 구성자인 줌, 방위 및 시야각을 갖는 타겟 카메라 함수; 줌, 방위 및 시야각을 가진 타겟 초기화 함수에 따라 위도, 경도 및 기타 모든 카메라 속성을 가진 카메라 위치 클래스의 간편 구성자인 경도, 줌, 방위 및 시야각을 가진 위도 카메라 함수; 지구의 소정의 좌표에서 해당 미터 거리에서 줌 레벨을 얻고 지정된 화면 포인트 수에 해당하는 포인트들과 소정의 미터를 포함하는 좌표 줌 함수를 포함한다. 카메라 위치 클래스는 카메라가 가리키는 지구상의 위치인 타겟 속성; 줌 레벨인 줌 속성; 진북으로부터 시계 방향으로 카메라의 방위를 제공하는 방위 속성; 나디르(nadir)(직접 지구를 향함)에서 카메라의 각도를 도 단위로 제공하는 시야각 속성을 포함할 수 있다.
카메라 업데이트 클래스(Camera Update Class): 카메라 업데이트 클래스는 맵 뷰 클래스에 적용될 수있는 업데이트를 나타낼 수 있다. 카메라 업데이트 클래스는 현재 카메라를 수정하기 위한 일부 로직을 캡슐화(encapsulate)한다. 카메라 업데이트 클래스는, 지도를 확대(줌인)하는 카메라 업데이트 클래스를 리턴하는 줌인 함수; 지도를 축소(줌아웃)하는 카메라 업데이트 클래스를 리턴하는 줌아웃 함수; 지정된 양만큼 줌을 변경하는 카메라 업데이트 클래스를 리턴하는 줌 함수(zoom by function); 줌(확대/축소)을 지정된 양으로 설정하는 카메라 업데이트 클래스를 리턴하는 줌 함수(zoom to function); 카메라 타겟을 지정된 좌표로 설정하는 카메라 업데이트 클래스를 리턴하는 타겟 설정 함수; 카메라 타겟을 설정하고 지정된 값으로 줌하는 카메라 업데이트 클래스를 리턴하는 타겟 줌 설정 함수; 카메라를 지정된 카메라 위치 클래스로 설정하는 카메라 업데이트 클래스를 리턴하는 카메라 설정 함수; 지정된 경계가 가능한 최대 줌 레벨에서 화면 중앙에 오도록 카메라를 변환하는 카메라 업데이트 함수를 리턴하는 경계 맞춤(fit) 함수; 경계 맞춤 함수와 유사하지만 뷰의 에지에서 경계 박스를 삽입하기 위해 API에서 패딩(padding)을 특정할 수 있는 패딩을 갖는 경계 맞춤 함수; 경계 맞춤 함수와 유사하지만 뷰의 에지에서 경계 박스를 삽입하기 위해 에지 삽입을 특정할 수 있는 에지 삽입이 있는 경계 맞춤 함수; x 및 y 방향으로 지정된 포인트 수만큼 뷰의 중심을 이동시키는 카메라 업데이트 클래스를 리턴하는 X 및 Y 스크롤 함수; 그리고 화면에 고정된 포커스 포인트로 줌(확대/축소)하는 카메라 업데이트 클래스를 리턴하는 포인트별 줌 함수와 같은 SPM(static public member) 함수를 포함할 수 있다.
서클 클래스(Circle Class): 서클 클래스는 지구 표면의 서클(spherical cap)이 될 수 있다. 서클 클래스는 오버레이 클래스에 의해 상속될 수 있다. 서클 클래스는 특정 위치 및 반경에 대한 서클 클래스의 간편 구성자인 위치 및 반경이 있는 서클 함수를 포함할 수 있다. 서클 클래스는, 서클 중심의 지구상의 위치를 제공하는 위치 속성; 양수(포지티브)여야 하는 미터 단위의 서클 반경을 제공하는 반경 속성; 스크린 포인트에서 서클의 윤곽의 너비를 제공하는 스트로크(stroke) 너비 속성; 서클의 외곽선의 색상(컬러)을 제공하는 스트로크 색상 속성; 서클의 내부가 칠해진 색상을 제공하는 색상 채움 속성(fill color property); 오버레이에 대한 간단한 설명 및 타이틀을 제공하는 타이틀 속성; 오버레이가 있는 맵을 제공하는 맵 속성; 오버레이가 탭 알림을 발생시켜야 하는지 여부를 제공하는 탭핑가능(tappable) 속성; 그리고 z 인덱스 값이 높은 오버레이가 z 인덱스 값이 낮은 타일 레이어(계층) 및 오버레이 위에 드로잉되는(drawn) 레이어링(layering) 시스템을 제공하는 z 인덱스 속성을 포함할 수 있다.
좌표 경계 클래스(Coordinate Bounds Class): 좌표 경계 클래스는 지표면의 직사각형 경계 박스를 나타낼 수 있다. 좌표 경계 클래스는 변경할 수 없다. 좌표 경계 클래스는, 두 코너에 의해 정의된 직사각형 영역에 대응하는 북동 및 남서 경계를 초기화하는 좌표 초기화 함수; 전달된 좌표를 포함하도록 확장된 현재 경계를 나타내는 좌표 경계 클래스를 리턴하는 좌표 포함 함수(including coordinate function); 전체를 포함하도록 확장된 현재 경계가 다른 경계에 의해 정의되었음을 나타내는 좌표 경계 클래스를 리턴하는 경계 포함 함수; 전달된 좌표가 좌표 경계 클래스 내에 있으면 YES를 리턴하는 좌표 포함 함수(contains coordinate function); 전달된 좌표 경계 클래스가 좌표 경계 클래스와 오버레이되는 경우 YES를 리턴하는 교차 경계 클래스; 영역을 포함하는 경계로 초기화하는 영역 초기화 함수; 경로를 포함하는 경계로 초기화하는 경로 초기화 함수; 그리고 경로를 포함하도록 확장된 현재 경계를 나타내는 좌표 경계 클래스를 리턴하는 경로 포함 함수를 포함할 수 있다. 좌표 경계 클래스는, 경계의 북동 코너를 제공하는 북동 속성(northeast property); 경계의 남서 코너를 제공하는 남서 속성; 경계가 포인트들을 포함하는지 여부를 제공하는 유효한 속성을 포함할 수 있다.
지오코더 클래스(Geocoder Class): 지오코더 클래스는 지구 좌표(위도 및 경도)를 해당 좌표 근처의 주소의 콜렉션(collection)에 매핑하는 역 지오코딩 서비스를 노출할 수 있다. 지오코더 클래스는, 지표면의 지오코드 좌표를 반전시키는 역 지오코드 좌표 완성 핸들러 함수(reverse geocode coordinate completion handler function); 그리고 지오코더 클래스의 간편 구성자인 지오코더 함수를 포함할 수 있다.
그라운드(지면) 오버레이 클래스(Ground Overlay Class): 지면 오버레이 클래스는 지표면에 존재하는 지면 오버레이에 사용 가능한 옵션을 지정(특정)할 수 있다. 지면 오버레이의 위치는 명시적으로 지정될 수 있으며 카메라를 향하지 않을 수 있다. 지면 오버레이 클래스는 오버레이 클래스를 상속할 수 있다 (아래 설명됨). 지면 오버레이 클래스는, 특정 경계 및 아이콘에 대한 지면 오버레이 클래스를 위한 간편 구성자인 경계 및 아이콘을 포함한 지면 오버레이 함수와, 이미지의 실제 크기가 카메라 픽셀과 일치하는 것처럼 지정된 아이콘을 위치에 렌더링하는 지면 오버레이 클래스를 구성하는 위치 및 아이콘과 줌 레벨을 갖는 지면 오버레이 함수를 포함할 수 있다. 상기 지면 오버레이 클래스는, 이 지면 오버레이 클래스의 위치, 보다 구체적으로 앵커(anchor)의 물리적 위치를 제공하는 위치 속성; 지면 오버레이 클래스가 경계와 관련하여 지구에 앵커되는(anchored) 위치를 지정하는 앵커 속성; 지구상의 경계 내에서 렌더링할 아이콘을 제공하는 아이콘 속성; 0(완전 투명)과 1(기본값) 사이의 지면 오버레이의 불투명도를 제공하는 불투명도 속성; 지면 오버레이의 방위를 도 단위로 제공하는 방위 속성; 아이콘이 드로잉되는 지구상의 2차원 경계를 제공하는 경계 속성; 오버레이에 대한 간단한 설명, 타이틀을 제공하는 타이틀 속성; 상기 오버레이가 있는 맵을 제공하는 맵 속성; 오버레이가 탭 알림을 발생시켜야 하는지 여부를 제공하는 탭핑가능 속성; 그리고 z 인덱스 값이 높은 오버레이가 z 인덱스 값이 낮은 타일 계층 및 오버레이 위에 드로잉되는 레이어링 시스템을 제공하는 z 인덱스 속성을 포함할 수 있다.
실내 빌딩 클래스(Indoor Building Class): 실내 빌딩 클래스는 레벨을 포함하는 빌딩을 나타낼 수 있다. 실내 빌딩 클래스는, 빌딩을 구성하는 레벨을 설명하는 실내 레벨 클래스의 어레이를 제공하는 레벨 속성; 디폴트 레벨의 레벨 어레이로 인덱스를 제공하는 디폴트 레벨 인덱스 속성; 빌딩이 완전히 지하(underground)에 있는지, 숨겨져 있는지를 지원하는 지하 속성을 포함할 수 있다.
실내 디스플레이 클래스(Indoor Display Class): 실내 디스플레이 클래스는 실내 레벨 데이터의 디스플레이를 관찰 또는 제어하는 함수를 제공할 수 있다. 실내 디스플레이 클래스는, 실내 디스플레이 클래스 델리게이트를 제공하는 델리게이트 속성; 현재 포커싱하고 있는 실내 데이터가 있는 빌딩이 없는 경우 0이되고, 현재 포커싱된 빌딩을 제공하는 활성 빌딩 속성; 활성 빌딩의 활성 레벨을 제공 및 제어하는 활성 레벨 속성을 포함할 수 있다.
실내 디스플레이 델리게이트 클래스(Indoor Display Delegate Class): 실내 디스플레이 델리게이트 클래스는 실내 디스플레이 클래스의 이벤트에 대한 델리게이트일 수 있다. 실내 디스플레이 델리게이트 클래스는 활성 빌딩이 변 될 때 발생하는 변경 활성 빌딩 함수 및 활성 레벨이 변경될 때 발생하는 변경 활성 레벨 함수를 포함할 수 있다.
실내 레벨 클래스(Indoor Level Class): 실내 레벨 클래스는 빌딩의 단일 레빌을 설명할 수 있다. 이 경우 여러 빌등이 레벨을 공유할 수 있으며 레벨 번호 및/또는 이름이 다를 수 있지만 레벨 인스턴스들은 동일하게 비교된다. 실내 레벨 클래스는, 레벨의 지역화된(localized) 디스플레이 이름을 제공하는 이름 속성; 레벨의 지역화된 짧은(short) 디스플레이 이름을 제공하는 짧은 이름 속성을 포함할 수 있다.
맵 계층(레이어) 클래스(Map Layer Class): 맵 계층 클래스는 맵 뷰 클래스에서 계층 클래스로 제공되는 CALayer 클래스의 커스텀(custom) 서브클래스일 수 있다. 맵 계층 클래스는 CALayer 클래스를 상속할 수 있다.
맵 뷰 클래스(Map View Class): 맵 뷰 클래스는 맵 API의 기본(primary) 클래스로 간주될 수 있으며 맵과 관련된 모든 함수의 엔트리 포인트가 될 수 있다. 맵 뷰 클래스는 일반적으로 간편 구성자를 사용하여 인스턴스화되지만 카메라가 디폴트 위치로 설정되는 디폴트 함수(default function)로 생성될 수도 있다. 맵 뷰 클래스는, 렌더러의 전원을 켜도록 맵에 지시하는 렌더링 시작 함수; 렌더러의 전원을 끄도록 맵에 지시하는 렌더링 중지 함수; 마커 및 폴리라인 및 지면 오버레이를 포함하는 맵에 추가된 모든 마크업을 클리어(clear)하는 클리어 함수; 최대 및 최소 줌을 설정하는 최소 및 최대 줌 설정 함수; 패딩으로 경계를 제시하는 카메라 위치 클래스를 구축하는 경계 삽입(bounds inset) 카메라 함수; 카메라 업데이트 클래스에 따라 카메라를 변경하는 카메라 이동 함수(주어진 카메라 위치가 내부적으로 사용되는 정밀도 및 변환 레벨을 고려하여 카메라가 실제로 동일한 렌더링을 유발하는지 여부를 체크하는 동일 렌더링 위치 클래스); 맵의 카메라를 카메라 위치 클래스로 애니메이션(animate)하는 카메라 위치 애니메이션 함수(카메라 위치에 대한 애니메이션 함수)(카메라 위치에 대한 애니메이션 함수와 유사하지만 카메라의 위치만 변경하는 위치 애니메이션 클래스); 카메라 위치 애니메이션 함수와 유사하지만 카메라의 줌 레벨만 변경하는 줌 애니메이션 함수; 카메라 위치 애니메이션 함수와 유사하지만 카메라의 방위만 변경하는 방위 애니메이션 함수; 카메라 위치 애니메이션 함수와 유사하지만 카메라의 시야각만 변경하는 시야 애니메이션 함수; 현재 카메라에 카메라 업데이트 클래스를 적용한 다음 카메라 위치 애니메이션 함수의 결과를 사용하는 카메라 업데이트 애니메이션 함수; 그리고 프레임 및 카메라 타겟이 있는 맵 뷰 클래스를 구축하고 리턴하는 프레임 및 카메라 맵 함수를 포함할 수 있다. 맵 뷰 클래스는, 맵 뷰 클래스 델리게이트를 제공하는 델리게이트 속성; 카메라를 제어하고 맵의 방향을 정의하는 카메라 속성; 스크린(화면) 좌표와 위도/경도 좌표 간에 변환할 수 있는 프로젝트 클래스 오브젝트를 리턴하는 프로젝션 속성; 위치 도트 및 정확도 서클의 활성화 여부를 제어하는 위치 활성화 속성; 위치가 활성화된 경우 사용자 위치 도트가 드로잉되는지 여부를 나타내는 위치 파라미터; 선택된 마커를 제공하는 마커 선택 속성; 맵이 이용 가능한 트래픽 데이터를 드로잉하는지 여부를 제어하는 트래픽 활성화 속성; 디스플레이되어야 하는 맵 타일의 유형을 제어하는 맵 유형 속성; 맵의 스타일을 제어하는 맵 스타일 속성; 카메라가 줌 아웃될 수 있는 가장 먼 거리를 제공하는 최소 줌 속성; 카메라가 지구에 가장 가까워지는 거리를 제공하는 최대 줌 속성; 가능한 경우 3차원 빌딩을 보여줄지 여부를 제공하는 빌딩 활성화 속성(buildings enabled property); 실내 맵이 가능한 경우에 표시되는지를 제공하는 실내 활성화 속성; 실내 데이터 디스플레이의 양태를 관찰 또는 제어할 수 있는 실내 디스플레이 클래스 인스턴스를 제공하는 실내 디스플레이 속성; 맵의 사용자 인터페이스 설정을 제어하는 UI 설정 클래스 오브젝트를 제공하는 설정 속성; 뷰의 가시 영역을 제어하는 패딩 속성; 접근성 요소(accessibility element)를 표시할지 여부를 제공하는 접근성 요소 은닉 속성; 계층에 사용되는 커스텀 CALayer 유형에 대한 접근자(accessor)를 제공하는 계층 속성; 렌더링 프레임 레이트를 제어하는 바람직한 프레임 레이트 속성; 이 맵에 내비게이션 기능(함수)이 활성화되어 있는지 여부를 제공하는 내비게이션 활성화 속성; 경로를 요청하고 턴 바이 턴 안내를 시작할 수 있는 맵 뷰 클래스에 대한 내비게이터를 제공하는 내비게이터 속성; 내비게이션이 활성화된 경우 카메라의 모드를 변경하는 카메라 모드 속성; 그리고 사용자의 위치를 따라갈 때 사용될 카메라 시각(perspective)을 제공하는 시각 속성을 포함할 수 있다.
맵 뷰 델리게이트 클래스(Map View Delegate Class): 맵 뷰 델리게이트 클래스는 맵 뷰 클래스의 이벤트에 대한 델리게이트일 수 있다. 맵 뷰 델리게이트 클래스는, 제스처 또는 애니메이션으로 인해 또는 카메라 또는 레이어의 제로 길이 애니메이션을 통해 명시적으로 업데이트되어 맵의 카메라가 변경되기 전에 호출되는 맵 뷰 이동 함수; 맵 상의 애니메이션 또는 제스처 동안 반복적으로 호출되거나 카메라가 명시적으로 설정된 경우 한 번만 호출될 수 있는 카메라 위치 변경 맵 뷰 함수; 제스처(outstanding gesture) 또는 애니메이션이 완료된 후 또는 카메라가 명시적으로 설정된 후 맵이 아이들(idle) 상태가 되면 호출되는 카메라 위치 맵 뷰 아이들 함수; 마커가 탭핑되지 않은 경우 특정 좌표에서 탭 제스처후 호출될 수 있는 좌표 탭 맵 뷰 함수; 특정 좌표에서 길게 누름(long-press, LP) 제스처 후에 호출될 수 있는 좌표 LP 맵 뷰 함수; 마커를 탭한 후 호출할 수 있는 마커 탭 맵 뷰 함수; 마커와 관련된 정보 윈도우가 탭된 후에 호출될 수 있는 마커 윈도우 탭 정보 맵뷰 함수; 마커의 정보 윈도우를 길게 누른 후에 호출할 수 있는 마커 정보 윈도우 LP 맵뷰 함수; 오버레이를 탭한 후 호출할 수 있는 오버레이 탭 맵뷰 함수; 관심 지점(POI)이 탭된 후에 호출될 수 있는 POI 탭 맵뷰 함수; 마커가 선택되려고 할 때 호출될 수 있고 그리고 함수가 UI 뷰를 리턴하는 경우 해당 마커에 사용할 선택적 커스텀 정보 윈도우를 제공하는 맵뷰 마커 정보 윈도우 함수; 맵 뷰 마커 정보 윈도우 함수가 닐(nil)로 리턴할 때 호출될 수 있는 맵 뷰 마커 정보 콘텐츠 함수; 마커와 관련된 정보 윈도우가 클로즈(close)될 때 호출될 수 있는 마커 정보 윈도우 클로즈 맵뷰 함수; 드래그가 마커에서 시작될 때 호출될 수 있는 마커 드래그 시작 맵뷰 함수; 마커의 드래그가 종료되었을 때 호출할 수 있는 마커 드래그 종료 맵뷰 함수; 마커가 드래그되는 동안 호출할 수 있는 마커 드래그 맵뷰 함수; 위치 버튼이 탭될 때 호출할 수 있는 맵뷰 위치 버튼 탭 함수; 타일이 요청되고 렌더링이 시작될 때 호출될 수 있는 타일 렌더링 시작 맵뷰 함수; 모든 타일이 영구적으로 로드되거나 실패하고 라벨(label)이 렌더링될 때 호출될 수 있는 타일 렌더링 완료 맴뷰 함수; 맵이 안정적인 경우 모든 타일이 로드되고 모든 라벨이 렌더링되고 카메라가 아이들 상태이고 모든 오버레이 오브젝트가 렌더링된 경우 호출되는 맵 뷰 스냅샷 준비 함수를 포함할 수 있다.
마커 클래스(Marker Class): 마커 클래스는 맵 표면의 특정 포인트에 배치된 아이콘일 수 있다. 마커 클래스의 아이콘은 맵 표면이 아닌 뷰잉 장치의 화면을 향하도록 드로잉되며, 즉, 맵 회전, 기울기 또는 줌(확대/축소)으로 인해 방향이 반드시 변경되는 것은 아니다. 마커 클래스는 오버레이 클래스를 상속할 수 있다. 마커 클래스는 디폴트 마커의 간편 구성자가 될 수 있는 위치를 갖는 마커 클래스와 아이콘으로 사용하기 위해 디폴트 마커 이미지의 색조 버전을 만들 수 있는 컬러(색상) 클래스가 있는 마커 이미지를 포함하는 기능(함수)을 포함할 수 있다. 마커 클래스는, 마커 위치를 제공하는 위치 속성; 선택된 경우 정보 윈도우(정보창)의 타이틀 아래에 표시될 수 있는 스니펫 텍스트를 제공하는 스니펫 속성; 렌더링할 마커 아이콘을 제공하는 아이콘 속성; 렌더링할 마커 뷰를 제공하는 아이콘 뷰 속성; 이 마커의 아이콘이 매 프레임마다 다시 드로잉될지 여부를 제어하는 뷰 변경 트랙(track) 속성; 마커에 대한 정보창이 매 프레임마다 다시 드로잉되는지 여부를 제어하는 정보창 변경 트랙 속성; 지표면의 마커 위치에 앵커된 아이콘 이미지의 포인트를 지정하는 지면 앵커를 제공하는 지면 앵커 속성; 포인트 바로 위에 디스플레이될 수 있는 정보 윈도우를 앵커하기 위해 아이콘 이미지의 포인트를 지정하는 정보 윈도우 앵커 속성; 마커가 맵 뷰 클래스에 배치될 때 사용되는 애니메이션을 제어하는 애니메이션(appear animation) 속성; 마커를 상호작용으로 드래그할 수 있는지 여부를 제어하는 드래그가능 속성; 마커가 카메라를 향한 빌보드(billboard)에 또는 지표면에 플랫(flat)해야 하는지 제어하는 플랫 속성; 마커의 앵커 포인트를 기준으로 시계 방향으로 마커의 회전을 제공하는 회전 속성; 완전히 투명한 0 또는 디폴트인 1 사이에서 마커의 불투명도를 제공하는 불투명도 속성; 마커 데이터를 제공하는 사용자 데이터 속성; 마커 클래스에 대한 코어 애니메이션 레이어를 제공하는 레이어 속성; 파노라마 뷰를 제공하고 마커를 표시하려고 시도할 파노라마 뷰 속성; 오버레이에 대한 간단한 설명, 타이틀을 제공하는 타이틀 속성; 이 오버레이가 있는 맵을 제공하는 맵 속성; 오버레이가 탭 알림을 발생시켜야 하는지 여부를 제공하는 탭핑 가능 속성; 그리고 z 인덱스 값이 높은 오버레이가 z 인덱스 값이 낮은 타일 레이어 및 오버레이 위에 드로잉되는 레이어링 시스템을 제공하는 z 인덱스 속성을 포함할 수 있다.
마커 레이어 클래스(Marker Layer Class): 마커 레이어 클래스는 관련 마커 클래스의 여러 속성의 애니메이션을 허용하는 마커별로 사용 가능한 CALayer의 커스텀 서브클래스일 수 있다. 마커 레이어 클래스는, 마커 클래스상의 위치의 위도 부분을 제공하는 위도 속성; 마커 클래스상의 위치의 경도 부분을 제공하는 경도 속성; 마커 클래스에 따라 회전을 제공하는 회전 속성; 마커 클래스에 따라 불투명도를 제공하는 불투명도 파라미터를 포함할 수 있다.
가변 카메라 위치 클래스(Mutable Camera Position Class): 가변 카메라 클래스는 카메라 위치 클래스를 상속할 수 있는 카메라 위치 클래스의 가변 버전일 수 있다. 가변 카메라 위치 클래스는, 지정된 이니셜라이저(initializer)인 줌, 방위 및 시야각을 갖는 타겟 초기화 함수; 특정 타겟 및 줌 레벨에 대해 가변 카메라 위치 클래스의 간편 구성자인 줌 타겟 카메라 함수(입력 줌이 있는 타겟 카메라 함수에 따라 가변 카메라 위치 클래스의 간편 구성자인 경도-줌-위도 카메라 함수); 줌, 방위 및 시야각의 입력을 갖는 타겟 초기화 함수에 따라 모든 카메라 속성을 가진 가변 카메라 위치 클래스의 간편 구성자인 줌, 방위 및 시야각을 가진 타겟 카메라 함수; 줌, 방위 및 시야각이 있는 타겟 초기화 함수에 따라 위도, 경도 및 기타 모든 카메라 속성을 가진 가변 카메라 위치 클래스의 간편 구성자인 경도, 줌, 방위 및 시야각을 가진 위도 카메라 함수; 지구상의 주어진 좌표에서 미터 거리에서 줌 레벨을 가져오고 지정된 스크린 포인트 수에 해당하는 소정의 미터와 포인트를 가진 좌표 줌 함수를 포함할 수 있다. 가변(변경 가능한) 카메라 위치 클래스는, 카메라가 향하는 지구상의 위치인 타겟 속성; 줌 레벨인 줌 속성; 진북으로부터 시계 방향으로 카메라의 방위를 제공하는 방위 속성; 그리고 나디르(nadir)(직접 지구를 향함)에서 카메라의 각도를 도 단위로 제공하는 시야각 속성을 포함할 수 있다.
가변 경로 클래스(Mutable Path Class): 가변 경로 클래스는 모든 좌표가 일반적으로 유효한 위치 좌표의 동적 어레이일 수 있다. 가변 경로 클래스는 해당 경로 클래스를 상속할 수 있는 변경 불가능한(불변) 경로 클래스(아래 설명)에 대한 가변 경로 클래스일 수 있다. 가변 경로 클래스는, 경로 끝에 좌표를 추가하는 좌표 추가 함수; 지정된 위도 및 경도로 새 위치를 추가하는 위도 및 경도 추가 함수; 주어진 인덱스에 좌표를 삽입하는 인덱스 좌표 삽입 함수; 주어진 인덱스의 좌표를 주어진 좌표로 교체하는 좌표 교체 함수; 인덱스에서 엔트리를 제거하는 인덱스에서의 좌표 제거 함수; 경로의 마지막 좌표를 제거하는 마지막 좌표 제거 함수; 경로의 모든 좌표를 제거하는 모든 좌표 제거 함수; 다른 경로의 콘텐츠로 새로 할당된 경로를 초기화하는 경로 초기화 함수; 경로의 크기를 얻는 카운트 함수; 지정된 인덱스가 유효한 경우 그 인덱스에서의 위치를 리턴하는 인덱스에서의 좌표 함수; 인코딩된 경로의 문자열(string)을 리턴하는 인코딩된 경로 함수; 지정된 위도 및 경도를 현재 경로의 각 좌표에 추가하여 얻은 새로운 경로를 리턴하는 위도 및 경도에 의한 경로 오프셋 함수; 종류에 따라 해석된 길이에 해당하는 경로를 따라 소수의(fractional) 세그먼트 수를 리턴하는 길이 및 종류 세그먼트 함수; 종류에 따라 경로의 길이를 리턴하는 종류 길이 함수; 빈 경로의 간편 구성자인 경로 함수; 인코딩된 경로에서의 새로 할당된 경로를 초기화하는 인코딩된 경로의 경로 함수와 같은 공용 멤버 함수를 포함할 수 있다.
내비게이션 웨이포인트 클래스(Navigation Waypoint Class): 내비게이션 웨이포인트 클래스는 내비게이션 목적지를 지정하는 데 사용되는 불변의 웨이포인트 클래스일 수 있다. 내비게이션 웨이포인트 클래스는 일반적으로 위치 또는 식별 번호에서 초기화될 수 있으므로 두 개의 지정된 이니셜라이저를 갖는다. 내비게이션 웨이포인트 클래스는 위치 및 타이틀이 있는 이니셜라이저와 장소 ID 및 타이틀이 있는 이니셜라이저를 포함하는 공용 멤버 함수를 포함할 수 있다. 내비게이션 웨이포인트 클래스는 웨이포인트의 이름을 제공하는 타이틀 속성을 포함할 수도 있다.
오리엔테이션 클래스(Orientation Class): 오리엔테이션 클래스는 파노라마 카메라 클래스의 시청 방향을 제어하는 데 사용되는 헤딩 및 피치의 튜플(tuple)일 수 있다. 오리엔테이션 클래스는 헤딩(heading), 수평 각도(degrees) 및 피치, 수평 각도(degrees)와 같은 공용 속성을 포함할 수 있다.
오버레이 클래스(Overlay Class): 오버레이 클래스는 특정 맵뷰 클래스에 첨부될 수 있는 일부 오버레이를 나타내는 추상 클래스일 수 있다. 오버레이 클래스는 직접 인스턴스화할 수 없으며, 대신 콘크리트 오버레이 유형의 인스턴스가 일반적으로 직접 생성된다. 오버레이 클래스는 오버레이 유형의 카피를 리턴하지만 맵이없는 카피 프로토콜(copying protocol)을 지원할 수 있다. 오버레이 클래스는 서클 클래스, 지면 오버레이 클래스, 마커 클래스, 폴리곤(polygon) 클래스 및 폴리라인 클래스에 의해 상속될 수 있다. 오버레이 클래스는, 오버레이에 대한 간단한 설명, 타이틀을 제공하는 타이틀 속성; 이 오버레이가 있는 맵을 제공하는 맵 속성; 오버레이가 탭 알림을 발생시켜야 하는지 여부를 제공하는 탭핑 가능 속성; 그리고 z 인덱스 값이 높은 오버레이가 z 인덱스 값이 낮은 타일 레이어 및 오버레이 위에 드로잉되는 레이어링 시스템을 제공하는 z 인덱스 속성을 포함할 수 있다.
파노라마 클래스(Panorama Class): 파노라마 클래스는 지구의 특정 파노라마에 대한 메타 데이터를 나타낼 수 있다. 파노라마 클래스는, 파노라마의 정확한 위치를 제공하는 좌표 속성; 파노라마의 ID를 제공하는 파노라마 ID; 그리고 인접 파노라마를 설명하는 파노라마 링크 클래스 어레이를 제공하는 링크 속성을 포함할 수 있다.
파노라마 카메라 클래스(Panorama Camera Class): 파노라마 카메라 클래스는 파노라마 뷰 클래스의 뷰 방향을 제어하는데 사용될 수 있다. 파노라마 카메라 클래스는, 방향, 줌 및 시야각(FOV, field of view)을 가진 초기화 함수; 오리엔테이션의 일부로 헤딩과 피치를 더한 줌과 디폴트 시야각을 지정하는 간편 구성자인 오리엔테이션 및 줌 카메라 함수; 디폴트 시야각, 헤딩 및 피치 및 줌을 지정하는 간편 구성자인 헤딩 피치 및 줌 카메라 함수; 오리엔테이션의 일부로 헤딩과 피치를 갖는 모든 카메라 속성을 지정하는 파노라마 카메라 클래스의 간편 구성자인 오리엔테이션 줌 및 시야각 카메라 함수; 모든 카메라 속성을 지정하는 파노라마 카메라 클래스의 간편 구성자인 헤딩 피치 줌 및 시야각 카메라 함수을 포함할 수 있다. 파노라마 카메라 클래스는, 줌 1에서 화각의 더 큰 치수로 둘러싸인 시야각을 제공하는 FOV(시야각) 속성; 그리고 스크린의 가시 영역을 조정하는 줌 속성; 헤딩과 피치를 함께 그룹화하는 카메라 오리엔테이션(방향)을 제공하는 오리엔테이션(방향) 속성을 포함할 수 있다.
파노라마 카메라 업데이트 클래스(Panorama Camera Update Class): 파노라마 카메라 업데이트 클래스는 현재 카메라를 수정하기 위한 일부 로직을 캡슐화하는 파노라마 뷰 클래스에 적용될 수 있는 업데이트를 나타낼 수 있다. 파노라마 카메라 업데이트 클래스는, 카메라 헤딩을 증가시키는 업데이트를 리턴하는 회전 함수; 카메라 헤딩을 주어진 값으로 설정하는 업데이트를 리턴하는 헤딩 설정 함수; 카메라 피치를 주어진 값으로 설정하는 업데이트를 리턴하는 피치 설정 함수; 카메라 줌을 주어진 값으로 설정하는 업데이트를 리턴하는 줌 설정 함수를 포함할 수 있다.
파노라마 레이어 클래스(Panorama Layer Class): 파노라마 레이어 클래스는 파노라마 뷰 클래스에서 레이어 클래스로 제공되는 CALayer의 커스텀 서브클래스 일 수 있다. 파노라마 레이어 클래스는 CALayer 클래스를 상속할 수 있다. 파노라마 레이어 클래스는 카메라 헤딩, 카메라 피치, 카메라 줌 및 카메라 FOV와 같은 속성을 포함할 수 있다.
파노라마 링크 클래스(Panorama Link Class): 파노라마 링크 클래스는 파노라마 클래스에서 인접(이웃) 파노라마로 링크할 수 있다. 파노라마 링크 클래스는, 전형적으로 북쪽에서 시계 방향으로 인접 파노라마의 각도를 도 단위로 제공하는 헤딩 속성; 인접 파노라마의 파노라마 ID를 제공하는 파노라마 ID 속성을 포함할 수 있다.
파노라마 서비스 클래스(Panorama Service Class): 파노라마 서비스 클래스는 파노라마 뷰가 활성화되지 않은 경우에도 파노라마 메타데이터를 요청하는 데 사용될 수 있다. 파노라마 서비스 클래스는, 주어진 좌표 근처의 파노라마에 대한 정보를 검색하는 좌표 근처 파노마라 요청 함수; 좌표 근처 파노라마 요청 함수와 유사하지만 좌표 주위의 검색 반경을 지정할 수 있는 반경을 가진 좌표 근처 파노라마 요청 함수; 지정된 ID를 가진 파노라마에 대한 정보를 검색하는 ID를 갖는 파노라마 요청 함수를 포함한 공용 멤버 함수를 포함할 수 있다.
파노라마 뷰 클래스(Panorama View Class): 파노라마 뷰 클래스는 스트리트 뷰 이미지를 디스플레이하도록 사용될 수 있다. 파노라마 뷰 클래스는, 모든 제스처 활성화 또는 비활성화 여부에 대한 선호도를 설정하는 모든 제스처 활성화 설정 함수; 지속시간(기간) 동안 카메라를 특정 위치로 애니메이션하는 카메라 애니메이션 함수; 지정된 지속시간 동안 카메라 업데이트 클래스에 따라 카메라를 수정하는 카메라 업데이트 함수; 좌표 근처의 파노라마를 요청하는 좌표 근처 이동 함수; 좌표 근처 이동 함수와 유사하지만 좌표 주변 검색 반경을 지정할 수 있는 반경을 가진 좌표 근처 이동 함수; 현재 뷰에서 오리엔테이션이 가리키는 스크린 포인트를 리턴하는 오리엔테이션 포인트 함수; 뷰에 대한 포인트를 주어진 스크린(화면) 위치를 통해 가리키는 현재 카메라 오리엔테이션을 리턴하는 포인트 오리엔테이션 함수; 좌표 근처 파노라마를 검색하여 디스플레이하는 프레임 간편 구성자가 있는 파노라마; 프레임 간편 구성자를 갖는 파노라마와 유사하지만 좌표 주위의 검색 반경을 지정할 수 있는 프레임 및 반경 간편 구성자를 갖는 파노라마를 포함할 수 있다. 파노라마 뷰 클래스는, 새로운 파노라마로 전환하는 파노라마 속성을 설정하는 파노라마 디스플레이를 제공하는 파노라마 속성; 파노라마 뷰에 대한 델리게이트를 제공하는 델리게이트 속성; 오리엔테이션 제스처의 활성화 또는 비활성화 여부를 제어하는 오리엔테이션 제스처 속성; 줌 제스처의 활성화 또는 비활성화 여부를 제어하는 줌 제스처 속성; 내비게이션 제스처의 활성화 또는 비활성화 여부를 제어하는 내비게이션 제스처 속성; 탭핑 가능한 내비게이션 링크가 숨겨지거나 보이는지 여부를 제어하는 내비게이션 링크 숨김 속성; 스트리트(거리) 이름 오버레이가 숨겨지거나 보이는지 여부를 제어하는 거리 이름 숨김 속성; 파노라마의 카메라를 제어하는 카메라 속성; 레이어에 사용되는 커스텀 CALayer 유형에 대한 접근자를 제공하는 레이어 속성을 포함할 수 있다.
파노라마 뷰 델리게이트 클래스(Panorama View Delegate Class): 파노라마 뷰 델리게이트 클래스는 파노라마 뷰 클래스의 이벤트에 대한 델리게이트일 수 있다. 파노라마 뷰 델리게이트 클래스는, 다른 파노라마로 이동을 시작할 때 호출되는 파노라마 ID 이동 함수; 뷰 파노라마 속성이 변경될 때마다 호출되는 파노라마 이동 함수; 좌표 근처 파노라마 이동 함수를 호출하여 파노라마 변경이 발생한 경우 호출되는 좌표 근처 파노라마 이동 함수; 좌표 근처 이동 함수에서 오류가 발생할 때 호출되는 좌표 근처 이동 에러 함수; 파노라마 ID로 이동 함수에서 오류가 발생할 때 호출되는 파노라마 ID 이동 에러 함수; 카메라를 변경하는 동안 반복적으로 호출된 카메라 이동 함수; 사용자가 파노라마 뷰를 탭했을 때 호출되는 탭 함수(이 탭은 사용되지 않음, 예: 내비게이션 화살표를 탭하면 탭이 사용될 수 있음); 마커를 탭한 후 호출되는 탭 마커 함수; 현재 뷰의 파노라마 타일이 방금 요청되어 로드되기 시작할 때 호출되는 렌더링 시작 함수; 타일이 로드되어 화면에 렌더링되거나 영구적으로 로드되지 않은 경우 호출되는 렌더링 완료 함수를 포함할 수 있다.
경로 클래스(Path Class): 경로 클래스는 2차원 좌표의 불변 어레이를 캡슐화할 수 있으므로 불변 경로 클래스이다. 경로 클래스는 가변 경로 클래스에 의해 상속될 수 있다. 경로 클래스는, 다른 경로 클래스의 콘텐츠로 새로 할당된 경로를 초기화하는 초기화 함수; 경로의 크기를 얻는 카운트 함수; 지정된 인덱스 위치가 유효한 경우 인덱스 위치를 리턴하는 인덱스 좌표 함수; 인코딩된 경로의 문자열을 리턴하는 인코딩된 경로 함수; 지정된 위도 및 경도를 현재 경로의 각 좌표에 추가하여 얻은 새로운 경로를 리턴하는 위도 및 경도에 의한 경로 오프셋 함수; 종류에 따라 해석된 길이에 해당하는 경로를 따라 분수의 세그먼트 수를 리턴하는 길이 및 종류 세그먼트 함수; 종류에 따라 경로의 길이를 리턴하는 종류의 길이 함수; 빈 경로의 간편 구성자인 경로 함수; 인코딩된 경로에서 새로 할당된 경로를 초기화하는 인코딩된 경로의 경로 함수를 포함할 수 있다.
폴리곤 클래스(Polygon Class): 폴리곤 클래스는 맵에 나타나는 폴리곤을 정의할 수 있다. (폴리라인과 같은) 폴리곤은 순서화된 시퀀스로 일련의 연결된 좌표를 정의하며, 또한 폴리곤은 폐쇄 루프를 형성하고 채워진 영역을 정의한다. 폴리곤 클래스는 오버레이 클래스를 상속할 수 있다. 폴리곤 클래스는 특정 경로의 폴리곤 클래스를 위한 간편 구성자인 경로 정적 함수가 있는 폴리곤을 포함할 수 있다. 폴리곤 클래스는, 폴리곤을 설명하는 경로를 제공하는 경로 속성; 이 폴리곤의 모든 홀을 설명하는 경로 인스턴스 어레이를 제공하는 홀 속성; 스크린 포인트에서 폴리곤 외곽선의 너비를 제공하는 스트로크 너비 속성; 폴리곤 외곽선의 색상(컬러)을 제공하는 스트로크 색상 속성; 채우기 색상을 제공하는 채우기 색상 속성; 폴리곤을 측지(geodesic) 보정으로 렌더링해야 하는지 여부를 제공하는 측지 속성; 오버레이에 대한 간단한 설명, 타이틀을 제공하는 타이틀 속성; 이 오버레이가 있는 맵을 제공하는 맵 속성; 오버레이가 탭 알림을 발생시켜야 하는지 여부를 제공하는 탭핑 가능 속성; 그리고 z 인덱스 값이 높은 오버레이가 z 인덱스 값이 낮은 타일 레이어 및 오버레이 위에 드로잉되는 레이어링 시스템을 제공하는 z 인덱스 속성을 포함할 수 있다.
폴리라인 클래스(Polyline Class): 폴리라인 클래스는 지표면에 존재하는 폴리라인에 대해 사용 가능한 옵션을 지정할 수 있으며 일반적으로 경로 속성에 지정된 포인트들 사이의 물리적 라인으로 드로잉된다. 폴리라인 클래스는 오버레이 클래스를 상속할 수 있다. 폴리라인 클래스는 특정 경로에 대한 폴리라인 클래스의 간편 구성자인 경로 폴리라인 함수를 포함할 수 있다. 폴리라인 클래스는, 폴리라인을 설명하는 경로를 제공하는 경로 속성; 스크린 포인트에서 라인의 너비를 제공하는 스트로크 너비 속성; 라인의 색상을 제공하는 스트로크 색상 속성; 폴리라인을 측지 보정으로 렌더링해야 하는지 여부를 제공하는 측지 속성; 폴리라인을 렌더링하는 데 사용되는 스타일 스팬(span) 클래스를 포함하는 어레이를 제공하는 스팬 속성; 오버레이에 대한 간단한 설명, 타이틀을 제공하는 타이틀 속성; 이 오버레이가 있는 맵을 제공하는 맵 속성; 오버레이가 탭 알림을 발생시켜야 하는지 여부를 제공하는 탭핑 가능 속성; 그리고 z 인덱스 값이 높은 오버레이가 z 인덱스 값이 낮은 타일 레이어 및 오버레이 위에 드로잉되는 레이어링 시스템을 제공하는 z 인덱스 속성을 포함할 수 있다.
프로젝션 클래스(Projection Class): 프로젝션 클래스는 맵뷰에서의 좌표와 지구 좌표 간의 매핑을 정의할 수 있다. 프로젝션 클래스는, 맵뷰에서 지구 좌표를 포인트 좌표에 매핑하는 좌표 포인트 함수; 맵뷰의 포인트 좌표를 지구 좌표에 매핑하는 포인트 좌표 함수; 거리를 콘텐츠 크기로 변환하는 좌표에서의 포인트 함수; 주어진 좌표가 프로젝션 내에 포함되는지 여부를 리턴하는 좌표 포함 함수; 프로젝션에 따라 가시적 영역을 리턴하는 가시적 영역 함수를 포함할 수 있다.
역 지오코드 응답 클래스(Reverse Geocode Response Class): 역 지오코드 응답 클래스는 역 지오코드 요청의 결과 콜렉션일 수 있다. 역 지오코드 응답 클래스는 사용 가능한 결과가 없는 경우 닐(nil)을 포함하고, 첫 번째(제1) 결과를 리턴하는 제1 결과 함수, 그리고 제1 결과를 포함한 모든 결과의 어레이를 리턴하는 결과 함수를 포함할 수 있다.
서비스 클래스(Service Class): 서비스 클래스는 맵 API에 대한 서비스 클래스의 공유 인스턴스를 제공하여 필요한 경우 이를 생성하는 공유 서비스 함수; 맵 API에 키를 제공하는 API 키 제공 함수; 오픈 소스 소프트웨어 라이센스 정보를 리턴하는 오픈 소스 라이센스 정보 함수; 맵 API의 출시 버전을 리턴하는 버전 함수를 포함하는 정적 공용 멤버 함수를 포함할 수 있다.
스트로크 스타일 클래스(Stroke Style Class): 스트로크 스타일 클래스는 폴리라인과 같은 1 차원 엔티티의 드로잉 스타일을 설명할 수 있다. 스트로크 스타일 클래스는 단색 스트로크 스타일을 생성하는 단색 함수와 한 색상에서 다른 색상으로 보간되는 그라디언트 스트로크 스타일을 생성하는 색상 간 그라디언트 함수를 포함할 수 있다.
스타일 스팬 클래스(Style Span Class): 스타일 스팬 클래스는 폴리라인의 일부 영역에 대한 스타일을 설명할 수 있다. 스타일 스팬 클래스는, 한 세그먼트 길이의 단색 스팬을 리턴하는 색상 스팬 함수; 소정의 세그먼트 수로 단색 스팬을 리턴하는 색상 세그먼트 스팬 함수; 소정의 스타일의 길이가 1 세그먼트인 스팬을 리턴하는 스타일 스팬 함수; 소정의 스타일과 길이를 가진 스팬을 세그먼트 수로 리턴하는 스타일 세그먼트 스팬 함수를 포함하는 팩토리 함수를 포함할 수 있다. 스타일 스팬 클래스는 스팬의 스타일을 제공하는 스타일 속성; 세그먼트 수로 스팬의 길이를 제공하는 세그먼트 속성을 포함할 수 있다.
동기화 타일 레이어 클래스(Sync Tile Layer Class): 동기화 타일 레이어 클래스는 이미지 레이어 데이터를 생성하기 위한 동기화 인터페이스를 제공하는 타일 레이어 클래스의 추상 서브클래스일 수 있다. 동기화 타일 레이어 클래스는 타일 레이어 클래스를 상속할 수 있다. 동기화 타일 레이어 클래스는, 타일 오버레이를 위한 이미지 타일을 생성하는 xy 줌 수신기에 대한 타일 요청 함수; x y 줌 수신기에 대한 타일 요청 함수와 유사하지만 타일을 리턴하기 위한 동기식 인터페이스를 제공하는 x y 줌 타일 함수; 모든 타일이 다시 요청되도록 캐시를 클리어하는 타일 캐시 클리어 함수를 포함할 수 있다. 동기화 타일 레이어 클래스는, 오버레이가 있는 맵을 제공하는 맵 속성; 더 높은 z 인덱스 값의 오버레이가 낮은 z 인덱스 값의 타일 레이어 및 오버레이 위에 드로잉될 수 있는 레이어링 시스템을 제공하는 z 인덱스 속성; 리턴된 타일 이미지가 디스플레이되기를 선호하는 픽셀 수를 지정하는 타일 크기 속성; 타일 레이어의 불투명도를 지정하는 불투명도 속성; 타일의 페이드인(fade in) 여부를 지정하는 페이드인 속성을 포함할 수 있다.
타일 레이어 클래스(Tile Layer Class): 타일 레이어 클래스는 지정된 맵 뷰 클래스에서 커스텀 이미지 타일을 오버레이할 수 있는 추상 클래스일 수 있다. 타일 레이어 클래스는 동기화 타일 레이어 클래스와 URL 타일 레이어 클래스에 의해 상속될 수 있다. 타일 레이어 클래스는 타일 오버레이를 위한 이미지 타일을 생성하는 x y 줌 수신기 타일 요청 함수; 모든 타일이 다시 요청되도록 캐시를 클리어하는 타일 캐시 클리어 함수를 포함할 수 있다. 타일 레이어 클래스는, 오버레이가 있는 맵을 제공하는 맵 속성; 더 높은 z 인덱스 값의 오버레이가 낮은 z 인덱스 값의 타일 레이어 및 오버레이 위에 드로잉될 수 있는 레이어링 시스템을 제공하는 z 인덱스 속성; 리턴된 타일 이미지가 디스플레이되기를 선호하는 픽셀 수를 지정하는 타일 크기 속성; 타일 레이어의 불투명도를 지정하는 불투명도 속성; 타일의 페이드인 여부를 지정하는 페이드인 속성을 포함할 수 있다.
타일 수신기 클래스(Tile Receiver Class): 타일 수신기 클래스는 타일 요청이 있을 때 타일 레이어 클래스에 제공되어 콜백을 나중에 또는 즉시 호출할 수 있다. 타일 수신기 클래스는 타일 레이어 클래스에서와 같이 동작하는 x y 줌 이미지 공용 멤버 함수를 가진 수신 타일을 포함할 수 있다.
URL 타일 레이어 클래스(URL Tile Layer Class): URL 타일 레이어 클래스는 구성자에서 리턴된 URL을 기반으로 타일을 패치(fetch)할 수 있다. URL 타일 레이어 클래스는 타일 레이어 클래스를 상속할 수 있다. URL 타일 레이어 클래스는, 타일 오버레이를 위한 이미지 타일을 생성하는 xy 줌 수신기 타일 요청 함수; 모든 타일이 다시 요청되도록 캐시를 클리어하는 타일 캐시 클리어 함수; URL 간편 구성자가 있는 타일 레이어를 포함할 수 있다. URL 타일 레이어 클래스는, 애플리케이션에 사용자 에이전트를 제공하기 위한 사용자 에이전트 속성; 오버레이가 있는 맵을 제공하는 맵 속성; 더 높은 z 인덱스 값의 오버레이가 낮은 z 인덱스 값의 타일 레이어 및 오버레이 위에 드로잉될 수 있는 레이어링 시스템을 제공하는 z 인덱스 속성; 리턴된 타일 이미지가 디스플레이되기를 선호하는 픽셀 수를 지정하는 타일 크기 속성; 타일 레이어의 불투명도를 지정하는 불투명도 속성; 타일의 페이드인 여부를 지정하는 페이드인 속성을 포함할 수 있다.
가시적 영역 클래스(Visible Region Class): 가시적 영역 클래스는 맵의 카메라에 보이는 폴리곤을 정의하는 4개의 포인트를 포함할 수 있다. 상기 폴리곤은 카메라가 기울기를 가질 수 있으므로 직사각형 대신 사다리꼴이 될 수 있다. 카메라가 카메라 중앙 바로 위에 있는 경우 모양은 직사각형이지만, 카메라가 기울어 진 경우 모양은 가장 작은 변이 뷰 포인트에 가장 가까운 사다리꼴인 것처럼 보일 수 있다. 가시적 영역 클래스는, 카메라의 왼쪽 하단 코너가 될 수 있는 왼쪽 니어(near) 속성과 같은 공개 속성; 카메라의 오른쪽 하단 코너가 될 수 있는 오른쪽 니어 속성; 카메라의 맨(far) 왼쪽 코너일 수 있는 맨 왼쪽 속성; 카메라의 맨 오른쪽 코너일 수 있는 맨 오른쪽 속성을 포함할 수 있다.
본 명세서에서 설명된 기술은 서버, 데이터베이스, 소프트웨어 애플리케이션 및 기타 컴퓨터 기반 시스템뿐만 아니라 취해진 조치 및 그러한 시스템과 주고받는 정보를 참조한다. 당업자는 컴퓨터 기반 시스템의 고유한 유연성이 컴포넌트들 사이에서 다양한 가능한 구성, 조합 및 태스크 및 기능의 분할을 가능하게 한다는 것을 인식할 것이다. 예를 들어, 본 명세서에서 설명된 서버 프로세스는 단일 서버 또는 다수의 서버를 조합하여 사용하여 구현될 수 있다. 데이터베이스 및 애플리케이션은 단일 시스템에서 구현되거나 여러 시스템에 분산될 수 있다. 분산 컴포넌트는 순차적으로 또는 병렬로 작동할 수 있다.
본 발명의 구체적인 실시 예에 대하여 본 발명을 상세하게 설명하였지만, 당업자는 전술한 내용을 이해하면 그러한 실시 예에 대한 변경, 변형 및 등가물을 용이하게 생성할 수 있음을 이해할 것이다. 따라서, 본 명세서의 범위는 제한적인 것이 아니라 예시적인 것이며, 본 명세서는 당업자에게 명백한 바와 같이 본 요지에 대한 이러한 변경, 변형 및/또는 추가를 포함하는 것을 배제하지 않는다.

Claims (20)

  1. iOS 운영 플랫폼을 구현하는 iOS 컴퓨팅 장치에서 실행되는 소프트웨어 애플리케이션에 대한 내비게이션 정보를 획득하기 위한 애플리케이션 프로그래밍 인터페이스를 구현하는 명령어를 저장하는 비일시적 컴퓨터 판독가능한 매체 -컴퓨팅 장치는 하나 이상의 프로세서 및 디스플레이 장치를 가짐-로서, 상기 애플리케이션 프로그래밍 인터페이스는,
    맵 뷰 클래스와 연관된 제1 명령어 세트 -상기 맵 뷰 클래스는 소프트웨어 애플리케이션의 내비게이션 서비스와 연관된 맵을 디스플레이하기 위한 복수의 함수를 특정하고, 상기 내비게이션 서비스는 상기 소프트웨어 애플리케이션과 연관된 내비게이션 정보를 제공하도록 구성되고, 맵을 디스플레이하기 위한 복수의 함수는 맵 뷰 클래스의 하나 이상의 인스턴스를 제어하는 것을 포함함-; 그리고
    네비게이터 클래스와 연관된 제2 명령어 세트를 포함하며, 네비게이터 클래스는 애플리케이션 프로그래밍 인터페이스와 연관되고 그리고 소프트웨어 애플리케이션에 의한 내비게이션 서비스의 구현을 제어하기 위한 복수의 함수를 특정하며, 내비게이션 서비스의 구현을 제어하기 위한 복수의 함수는 맵 뷰 클래스의 하나 이상의 인스턴스를 제어하는 것을 포함하는 것을 특징으로 하는 명령어를 저장하는 비일시적 컴퓨터 판독가능한 매체.
  2. 제1항에 있어서, 상기 비일시적 컴퓨터 판독가능한 매체는,
    하나 이상의 프로세서에 의해, 소프트웨어 애플리케이션의 실행 시 서비스 클래스에 애플리케이션 프로그래밍 인터페이스 키를 제공하는 것을 더 포함하며, 상기 서비스 클래스는 맵 애플리케이션 프로그래밍 인터페이스와 연관되는 것을 특징으로 하는 명령어를 저장하는 비일시적 컴퓨터 판독가능한 매체.
  3. 제2항에 있어서, 상기 서비스 클래스는 상기 서비스 클래스의 인스턴스를 상기 맵 애플리케이션 프로그래밍 인터페이스와 공유하기 위한 공유 서비스 함수를 포함하는 것을 특징으로 하는 명령어를 저장하는 비일시적 컴퓨터 판독가능한 매체.
  4. 제1항에 있어서, 상기 맵 뷰 클래스의 하나 이상의 부분은 맵 애플리케이션 프로그래밍 인터페이스의 일부인 것을 특징으로 하는 명령어를 저장하는 비일시적 컴퓨터 판독가능한 매체.
  5. 제1항에 있어서, 하나 이상의 프로세서에 의해 맵을 디스플레이하는 데 사용되는 맵 뷰 클래스를 인스턴스화하는 것은,
    하나 이상의 프로세서에 의해 간편 구성자(convenience constructor)를 사용하여 맵 뷰 클래스를 인스턴스화하는 것을 포함하는 것을 특징으로 하는 명령어를 저장하는 비일시적 컴퓨터 판독가능한 매체.
  6. 제1항에 있어서, 상기 맵을 제어하는 것은 맵과 함께 경로 및 내비게이션 사용자 인터페이스 요소의 디스플레이를 제어하는 것을 포함하는 것을 특징으로 하는 명령어를 저장하는 비일시적 컴퓨터 판독가능한 매체.
  7. 제1항에 있어서, 상기 애플리케이션 프로그래밍 인터페이스는 맵 뷰 델리게이트 클래스와 연관된 제3 명령어 세트를 포함하고, 상기 맵 뷰 클래스는 맵 뷰 클래스의 이벤트에 대한 델리게이트로 특정되는 것을 특징으로 하는 명령어를 저장하는 비일시적 컴퓨터 판독가능한 매체.
  8. 제7항에 있어서, 상기 맵 뷰 델리게이트 클래스는 상기 맵에 대한 최소 줌 및 최대 줌을 설정하기 위한 최소 및 최대 줌 설정 함수를 포함하는 것을 특징으로 하는 명령어를 저장하는 비일시적 컴퓨터 판독가능한 매체.
  9. 제1항에 있어서, 상기 애플리케이션 프로그래밍 인터페이스는 네비게이터 델리게이트 프로토콜과 연관된 제4 명령어 세트를 포함하고, 상기 네비게이터 델리게이트 프로토콜은 네비게이터 클래스의 델리게이트로 특정되고, 상기 내비게이터 델리게이트 프로토콜은 상기 내비게이션 서비스와 연관된 내비게이션 정보를 업데이트하기 위한 하나 이상의 호출(call)을 구현하도록 구성되는 것을 특징으로 하는 명령어를 저장하는 비일시적 컴퓨터 판독가능한 매체.
  10. 제1항에 있어서, 상기 애플리케이션 프로그래밍 인터페이스는 상기 맵을 보기 위해 사용되는 카메라를 수정하는데 사용되는 카메라 업데이트 클래스와 연관된 제5 명령어 세트를 포함하는 것을 특징으로 하는 명령어를 저장하는 비일시적 컴퓨터 판독가능한 매체.
  11. 제10항에 있어서, 상기 맵을 디스플레이하기 위한 복수의 함수는 카메라 업데이트 클래스에 따라 카메라의 위치를 변경하는 카메라 이동 함수를 포함하는 것을 특징으로 하는 명령어를 저장하는 비일시적 컴퓨터 판독가능한 매체.
  12. 제1항에 있어서, 상기 애플리케이션 프로그래밍 인터페이스는 사용자 인터페이스(UI) 설정 클래스와 연관된 제6 명령어 세트를 포함하고, 상기 UI 설정 클래스는 내비게이션 서비스와 연관된 사용자 인터페이스를 제어하기 위해 하나 이상의 파라미터를 특정하는 것을 특징으로 하는 명령어를 저장하는 비일시적 컴퓨터 판독가능한 매체.
  13. 하나 이상의 프로세서를 갖는 iOS 컴퓨팅 장치에서 애플리케이션 프로그래밍 인터페이스를 사용하여 소프트웨어 애플리케이션의 일부로서 내비게이션 서비스를 통합하기 위한 방법 -컴퓨팅 장치는 iOS 운영 체제를 구현함-으로서,
    하나 이상의 프로세서에 의해 맵 뷰 클래스를 인스턴스화하는 단계 -상기 맵 뷰 클래스는 소프트웨어 애플리케이션의 내비게이션 서비스와 연관된 맵을 디스플레이하기 위한 복수의 함수를 특정하고, 상기 내비게이션 서비스는 상기 소프트웨어 애플리케이션과 연관된 내비게이션 정보를 제공하도록 구성되고, 상기 맵을 디스플레이하기 위한 복수의 함수는 맵 뷰 클래스의 하나 이상의 인스턴스를 제어하는 것을 포함함-;
    하나 이상의 프로세서에 의해, 애플리케이션 프로그래밍 인터페이스와 연관된 네비게이터 클래스의 하나 이상의 인스턴스를 생성하는 단계 -상기 내비게이터 클래스는 소프트웨어 애플리케이션에 의한 내비게이션 서비스의 구현을 제어하기 위한 복수의 함수를 특정하고, 네비게이션 서비스의 구현을 제어하기 위한 복수의 함수는 맵 뷰 클래스의 하나 이상의 인스턴스를 제어하는 것을 포함함-; 그리고
    하나 이상의 프로세서에 의해 내비게이터 클래스의 하나 이상의 인스턴스를 사용하여 상기 맵을 제어하는 단계를 포함하는 것을 특징으로 하는 내비게이션 서비스를 통합하기 위한 방법.
  14. 제13항에 있어서, 상기 방법은,
    하나 이상의 프로세서에 의해, 소프트웨어 애플리케이션의 실행 시 서비스 클래스에 애플리케이션 프로그래밍 인터페이스 키를 제공하는 단계를 더 포함하며, 상기 서비스 클래스는 맵 애플리케이션 프로그래밍 인터페이스와 연관되는 것을 특징으로 하는 내비게이션 서비스를 통합하기 위한 방법.
  15. 제14항에 있어서, 상기 서비스 클래스는 상기 서비스 클래스의 인스턴스를 상기 맵 애플리케이션 프로그래밍 인터페이스와 공유하기 위한 공유 서비스 함수를 포함하는 것을 특징으로 하는 내비게이션 서비스를 통합하기 위한 방법.
  16. 제14항에 있어서, 상기 맵 뷰 클래스는 맵 애플리케이션 프로그래밍 인터페이스의 일부로서 제공되는 것을 특징으로 하는 내비게이션 서비스를 통합하기 위한 방법.
  17. 제13항에 있어서, 하나 이상의 프로세서에 의해 맵을 디스플레이하는 데 사용되는 맵 뷰 클래스를 인스턴스화하는 단계는,
    하나 이상의 프로세서에 의해, 간편 구성자를 사용하여 맵 뷰 클래스를 인스턴스화하는 단계를 포함하는 것을 특징으로 하는 내비게이션 서비스를 통합하기 위한 방법.
  18. 제13항에 있어서, 상기 맵을 제어하는 단계는 맵과 함께 경로 및 내비게이션 사용자 인터페이스 요소의 디스플레이를 제어하는 단계를 포함하는 것을 특징으로 하는 내비게이션 서비스를 통합하기 위한 방법.
  19. iOS 운영 체제를 구현하는 컴퓨팅 장치로서,
    디스플레이 장치;
    하나 이상의 프로세서; 그리고
    하나 이상의 메모리 장치를 포함하며, 상기 하나 이상의 메모리 장치는 소프트웨어 애플리케이션의 일부로서 내비게이션 서비스를 제공하기 위해 내비게이션 정보를 획득하도록 소프트웨어 애플리케이션에 의해 호출되는 애플리케이션 프로그래밍 인터페이스를 구현하는 컴퓨터 판독가능 명령어를 저장하고, 컴퓨터 판독가능 명령어는,
    맵 뷰 클래스와 연관된 제1 명령어 세트 -상기 맵 뷰 클래스는 소프트웨어 애플리케이션의 내비게이션 서비스와 연관된 맵을 디스플레이하기 위한 복수의 함수를 특정하고, 상기 내비게이션 서비스는 상기 소프트웨어 애플리케이션과 연관된 내비게이션 정보를 제공하도록 구성되고, 맵을 디스플레이하기 위한 복수의 함수는 맵 뷰 클래스의 하나 이상의 인스턴스를 제어하는 것을 포함함-; 그리고
    네비게이터 클래스와 연관된 제2 명령어 세트를 포함하며, 네비게이터 클래스는 애플리케이션 프로그래밍 인터페이스와 연관되고 그리고 소프트웨어 애플리케이션에 의한 내비게이션 서비스의 구현을 제어하기 위한 복수의 함수를 특정하며, 내비게이션 서비스의 구현을 제어하기 위한 복수의 함수는 맵 뷰 클래스의 하나 이상의 인스턴스를 제어하는 것을 포함하는, 것을 특징으로 하는 iOS 운영 체제를 구현하는 컴퓨팅 장치.
  20. 제19항에 있어서, 상기 맵을 제어하는 단계는 맵과 함께 경로 및 내비게이션 사용자 인터페이스 요소의 디스플레이를 제어하는 단계를 포함하는 것을 특징으로 하는 iOS 운영 체제를 구현하는 컴퓨팅 장치.
KR1020227003323A 2017-02-28 2017-10-10 내비게이션 애플리케이션 프로그래밍 인터페이스 KR102480786B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US15/444,924 2017-02-28
US15/444,924 US10352717B2 (en) 2017-02-28 2017-02-28 Navigation application programming interface
KR1020197028515A KR102359215B1 (ko) 2017-02-28 2017-10-10 내비게이션 애플리케이션 프로그래밍 인터페이스
PCT/US2017/055863 WO2018160227A1 (en) 2017-02-28 2017-10-10 Navigation application programming interface

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020197028515A Division KR102359215B1 (ko) 2017-02-28 2017-10-10 내비게이션 애플리케이션 프로그래밍 인터페이스

Publications (2)

Publication Number Publication Date
KR20220018098A true KR20220018098A (ko) 2022-02-14
KR102480786B1 KR102480786B1 (ko) 2022-12-23

Family

ID=60190945

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020197028515A KR102359215B1 (ko) 2017-02-28 2017-10-10 내비게이션 애플리케이션 프로그래밍 인터페이스
KR1020227003323A KR102480786B1 (ko) 2017-02-28 2017-10-10 내비게이션 애플리케이션 프로그래밍 인터페이스

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020197028515A KR102359215B1 (ko) 2017-02-28 2017-10-10 내비게이션 애플리케이션 프로그래밍 인터페이스

Country Status (8)

Country Link
US (2) US10352717B2 (ko)
EP (1) EP3571591A1 (ko)
JP (2) JP6780127B2 (ko)
KR (2) KR102359215B1 (ko)
CN (2) CN113867722A (ko)
DE (2) DE102017125058A1 (ko)
GB (1) GB2560063A (ko)
WO (1) WO2018160227A1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10178507B1 (en) * 2016-04-25 2019-01-08 Tiptags Inc. Messaging systems for sharing location specific information
US11182709B2 (en) 2016-08-16 2021-11-23 Teleport Mobility, Inc. Interactive real time system and real time method of use thereof in conveyance industry segments
US11087252B2 (en) 2016-08-16 2021-08-10 Teleport Mobility, Inc. Interactive real time system and real time method of use thereof in conveyance industry segments
US11176500B2 (en) 2016-08-16 2021-11-16 Teleport Mobility, Inc. Interactive real time system and real time method of use thereof in conveyance industry segments
US10352717B2 (en) * 2017-02-28 2019-07-16 Google Llc Navigation application programming interface
CA3075253C (en) * 2017-09-12 2023-08-29 Google Llc Quantum error correction
CN109084789A (zh) * 2018-07-02 2018-12-25 四川斐讯信息技术有限公司 一种智能手表导航方法、智能手表及系统
CN112596734B (zh) * 2020-12-15 2024-06-07 五八同城信息技术有限公司 静态库生成方法及装置
CN112902968B (zh) * 2021-02-01 2024-10-22 成都紫瑞青云航空宇航技术有限公司 一种高效率三维数字导航地球生成方法及系统
CN113593052B (zh) * 2021-08-06 2022-04-29 贝壳找房(北京)科技有限公司 场景朝向确定方法及标记方法
KR102683873B1 (ko) * 2021-11-22 2024-07-09 전남대학교산학협력단 Mqtt 기반 모빌리티 관리 시스템, 방법 및 프로그램
CN115164914B (zh) * 2022-07-11 2023-10-03 北京中航世科电子技术有限公司 一种单兵作战用导航方法、系统、电子设备及介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050039551A (ko) * 2003-10-24 2005-04-29 마이크로소프트 코포레이션 컴퓨터 플랫폼용 프로그래밍 인터페이스
KR20160003023A (ko) * 2013-04-22 2016-01-08 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 애플리케이션 프로그래밍 인터페이스들에 대한 런타임 액세스의 제어

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9875671B2 (en) * 2009-12-17 2018-01-23 Google Llc Cloud-based user interface augmentation
US8682453B2 (en) 2010-06-04 2014-03-25 The Mathworks, Inc. Interactive system for controlling multiple input multiple output control (MIMO) structures
CN103562680B (zh) * 2011-06-03 2016-06-29 苹果公司 用于比较和选择备选导航路线的设备与方法
US9542241B2 (en) 2011-07-12 2017-01-10 Harman International Industries, Incorporated Navigation application interface
US9182243B2 (en) * 2012-06-05 2015-11-10 Apple Inc. Navigation application
JP2014174143A (ja) * 2013-03-13 2014-09-22 Ricoh Co Ltd 情報処理装置、プログラム及びシステム
JP2016191643A (ja) * 2015-03-31 2016-11-10 ブラザー工業株式会社 情報処理プログラムおよび情報処理装置
US10061625B2 (en) * 2016-03-25 2018-08-28 Google Llc Navigation application programming interface to accommodate multiple waypoint routing
US10352717B2 (en) * 2017-02-28 2019-07-16 Google Llc Navigation application programming interface

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050039551A (ko) * 2003-10-24 2005-04-29 마이크로소프트 코포레이션 컴퓨터 플랫폼용 프로그래밍 인터페이스
KR20160003023A (ko) * 2013-04-22 2016-01-08 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 애플리케이션 프로그래밍 인터페이스들에 대한 런타임 액세스의 제어

Also Published As

Publication number Publication date
CN108509194B (zh) 2021-09-21
US20190323853A1 (en) 2019-10-24
DE102017125058A1 (de) 2018-08-30
JP2021012210A (ja) 2021-02-04
JP2020514733A (ja) 2020-05-21
WO2018160227A1 (en) 2018-09-07
CN108509194A (zh) 2018-09-07
US10921150B2 (en) 2021-02-16
JP6780127B2 (ja) 2020-11-04
GB2560063A (en) 2018-08-29
KR102480786B1 (ko) 2022-12-23
GB201717671D0 (en) 2017-12-13
CN113867722A (zh) 2021-12-31
KR20190117767A (ko) 2019-10-16
US20180245942A1 (en) 2018-08-30
EP3571591A1 (en) 2019-11-27
US10352717B2 (en) 2019-07-16
DE202017106482U1 (de) 2018-01-29
KR102359215B1 (ko) 2022-02-07
JP7201651B2 (ja) 2023-01-10

Similar Documents

Publication Publication Date Title
KR102359215B1 (ko) 내비게이션 애플리케이션 프로그래밍 인터페이스
US9313265B2 (en) System and method for providing individualized portable asset applications
CN110753826A (zh) 导航应用程序中的搭乘服务选项的交互式列表
KR20200029033A (ko) 맵 데이터 처리 방법, 컴퓨터 디바이스 및 저장 매체
EP2790176B1 (en) Computing systems, devices and methods for rendering maps remotely from an host application
CN107430632B (zh) 根据用户信号动态地控制地图视口
US9454848B2 (en) Image enhancement using a multi-dimensional model
CN110720027A (zh) 导航应用中具有乘车服务路段的多方式指导
US10061625B2 (en) Navigation application programming interface to accommodate multiple waypoint routing
JP7549569B2 (ja) サードパーティデータを使用したナビゲーションアプリケーションにおける視覚化のカスタマイズ
CN107229461B (zh) 将导航服务整合为软件应用的一部分的方法以及计算设备
US10094681B2 (en) Controlling a map system to display off-screen points of interest
Křečková Turistická navigace s davovým sběrem dat o přístupnosti
KR20240020742A (ko) 실사 지도를 이용한 부동산 정보 표시 방법 및 장치
Au et al. Bing Maps for Windows Universal Applications

Legal Events

Date Code Title Description
A107 Divisional application of patent
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant