1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
//! The **Geocoding API** is a service that provides geocoding and reverse
//! geocoding of addresses. It can be used to convert a street address to
//! geographic coordinates (latitude & longitude), or vice versa.
//!
//! **Geocoding** is the process of converting addresses (like a street address)
//! into geographic coordinates (like latitude and longitude), which you can use
//! to place markers on a map, or position the map.
//!
//! **Reverse geocoding** is the process of converting geographic coordinates
//! into a human-readable address.
//!
//! You can also use the Geocoding API to find the address for a given [place
//! ID](https://developers.google.com/maps/documentation/geocoding/intro#place-id).
//!
//! # [Get Started](https://developers.google.com/maps/documentation/geocoding/start)
//!
//! * **New Users**: Before you can start using the Google Maps Platform APIs
//!   and SDKs, you must sign up and create a billing account. To learn more,
//!   see [Get Started with Google Maps
//!   Platform](https://developers.google.com/maps/gmp-get-started).
//!
//! * This service is also available as part of the client-side [Google Maps
//!   JavaScript
//!   API](https://developers.google.com/maps/documentation/javascript/geocoding),
//!   or for server-side use with the [Java Client, Python Client, Go Client and
//!   Node.js Client for Google Maps
//!   Services](https://developers.google.com/maps/documentation/geocoding/client-library).
//!
//! [Start coding with our client libraries](https://developers.google.com/maps/documentation/geocoding/start#client-library)
//!
//! Client libraries make developing with the Google Maps web service APIs
//! easier by providing simple, native implementations of common tasks, such as
//! authentication, request throttling and automatic retry. The Geocoding API is
//! available in the [Java Client, Python Client, Go Client and Node.js Client
//! for Google Maps
//! Services](https://developers.google.com/maps/documentation/geocoding/client-library).
//!
//! # [Authentication, quotas, pricing, and policies](https://developers.google.com/maps/documentation/geocoding/start#auth)
//!
//! ## [Activate the API and get an API key](https://developers.google.com/maps/documentation/geocoding/start#get-a-key)
//!
//! To use the Geocoding API, you must first activate the API in the Google
//! Cloud Platform Console and obtain the proper authentication credentials.
//! You need to provide an API key in each request (or a [client ID if you have
//! a Premium
//! Plan](https://developers.google.com/maps/documentation/geocoding/get-api-key#premium-auth).
//!
//! Click the button below to flow through a process where you will:
//! 1. Create or select a project
//! 2. Enable the API
//! 3. Get an API key
//!
//! [Get Started](https://cloud.google.com/maps-platform/#get-started)
//!
//! [Learn more about authentication
//! credentials](https://developers.google.com/maps/documentation/geocoding/get-api-key).
//!
//! ## [Quotas and pricing](https://developers.google.com/maps/documentation/geocoding/start#quotas)
//!
//! Review the [usage and
//! billing](https://developers.google.com/maps/documentation/geocoding/usage-and-billing)
//! page for details on the quotas and pricing set for the Geocoding API.
//!
//! ## [Policies](https://developers.google.com/maps/documentation/geocoding/policies)
//!
//! Use of the Geocoding API must be in accordance with the [API
//! policies](https://developers.google.com/maps/documentation/geocoding/policies).
//!
//! # [Learn more](https://developers.google.com/maps/documentation/geocoding/start#learn-more)
//!
//! There’s more you can do with the Geocoding API. See the [Geocoding API
//! developer
//! guide](https://developers.google.com/maps/documentation/geocoding/intro) for
//! additional demos, examples, available parameters, status codes and error
//! messages, and other details.
//!
//! The [Geocoding API developer
//! guide](https://developers.google.com/maps/documentation/geocoding/intro)
//! describes the Geocoding API web service. It is intended for website and
//! mobile developers who want to use geocoding data within maps provided by one
//! of the Google Maps Platform APIs.

pub mod error;
pub mod forward;
pub mod response;
pub mod reverse;

// -----------------------------------------------------------------------------

const SERVICE_URL: &str = "https://maps.googleapis.com/maps/api/geocode";
const OUTPUT_FORMAT: &str = "json"; // json or xml

// -----------------------------------------------------------------------------

pub use crate::geocoding::{
    error::Error as GeocodingError,
    forward::{component::Component as GeocodingComponent, ForwardRequest as GeocodingRequest}, // forward
    response::{
        geocoding::Geocoding, plus_code::PlusCode, status::Status as GeocodingStatus,
        Response as GeocodingResponse,
    }, // response
    reverse::ReverseRequest as GeocodingReverseRequest,
}; // geocoding

pub use crate::types::{AddressComponent, Geometry, LocationType};