Ce contenu n'est pas disponible dans la langue sélectionnée.
Chapter 113. Geocoder Component
Available as of Camel version 2.12
The geocoder: component is used for looking up geocodes (latitude and longitude) for a given address, or reverse lookup. The component uses the Java API for Google Geocoder library.
Maven users will need to add the following dependency to their pom.xml
for this component:
113.1. URI format Copier lienLien copié sur presse-papiers!
geocoder:address:name[?options] geocoder:latlng:latitude,longitude[?options]
geocoder:address:name[?options]
geocoder:latlng:latitude,longitude[?options]
113.2. Options Copier lienLien copié sur presse-papiers!
The Geocoder component has no options.
The Geocoder endpoint is configured using URI syntax:
geocoder:address:latlng
geocoder:address:latlng
with the following path and query parameters:
113.2.1. Path Parameters (2 parameters): Copier lienLien copié sur presse-papiers!
Name | Description | Default | Type |
---|---|---|---|
address | The geo address which should be prefixed with address: | String | |
latlng | The geo latitude and longitude which should be prefixed with latlng: | String |
113.2.2. Query Parameters (14 parameters): Copier lienLien copié sur presse-papiers!
Name | Description | Default | Type |
---|---|---|---|
clientId (producer) | To use google premium with this client id | String | |
clientKey (producer) | To use google premium with this client key | String | |
headersOnly (producer) | Whether to only enrich the Exchange with headers, and leave the body as-is. | false | boolean |
language (producer) | The language to use. | en | String |
httpClientConfigurer (advanced) | Register a custom configuration strategy for new HttpClient instances created by producers or consumers such as to configure authentication mechanisms etc | HttpClientConfigurer | |
httpConnectionManager (advanced) | To use a custom HttpConnectionManager to manage connections | HttpConnectionManager | |
synchronous (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean |
proxyAuthDomain (proxy) | Domain for proxy NTML authentication | String | |
proxyAuthHost (proxy) | Optional host for proxy NTML authentication | String | |
proxyAuthMethod (proxy) | Authentication method for proxy, either as Basic, Digest or NTLM. | String | |
proxyAuthPassword (proxy) | Password for proxy authentication | String | |
proxyAuthUsername (proxy) | Username for proxy authentication | String | |
proxyHost (proxy) | The proxy host name | String | |
proxyPort (proxy) | The proxy port number | Integer |
113.3. Exchange data format Copier lienLien copié sur presse-papiers!
Camel will deliver the body as a com.google.code.geocoder.model.GeocodeResponse
type.
And if the address is "current"
then the response is a String type with a JSON representation of the current location.
If the option headersOnly
is set to true
then the message body is left as-is, and only headers will be added to the Exchange.
113.4. Message Headers Copier lienLien copié sur presse-papiers!
Header | Description |
---|---|
|
Mandatory. Status code from the geocoder library. If status is |
| The formatted address |
| The latitude of the location. |
| The longitude of the location. |
| The latitude and longitude of the location. Separated by comma. |
| The city long name. |
| The region code. |
| The region name. |
| The country long name. |
| The country short name. |
Notice not all headers may be provided depending on available data and mode in use (address vs latlng).
113.5. Samples Copier lienLien copié sur presse-papiers!
In the example below we get the latitude and longitude for Paris, France
from("direct:start") .to("geocoder:address:Paris, France")
from("direct:start")
.to("geocoder:address:Paris, France")
If you provide a header with the CamelGeoCoderAddress
then that overrides the endpoint configuration, so to get the location of Copenhagen, Denmark we can send a message with a headers as shown:
template.sendBodyAndHeader("direct:start", "Hello", GeoCoderConstants.ADDRESS, "Copenhagen, Denmark");
template.sendBodyAndHeader("direct:start", "Hello", GeoCoderConstants.ADDRESS, "Copenhagen, Denmark");
To get the address for a latitude and longitude we can do:
from("direct:start") .to("geocoder:latlng:40.714224,-73.961452") .log("Location ${header.CamelGeocoderAddress} is at lat/lng: ${header.CamelGeocoderLatlng} and in country ${header.CamelGeoCoderCountryShort}")
from("direct:start")
.to("geocoder:latlng:40.714224,-73.961452")
.log("Location ${header.CamelGeocoderAddress} is at lat/lng: ${header.CamelGeocoderLatlng} and in country ${header.CamelGeoCoderCountryShort}")
Which will log
Location 285 Bedford Avenue, Brooklyn, NY 11211, USA is at lat/lng: 40.71412890,-73.96140740 and in country US
Location 285 Bedford Avenue, Brooklyn, NY 11211, USA is at lat/lng: 40.71412890,-73.96140740 and in country US
To get the current location you can use "current" as the address as shown:
from("direct:start") .to("geocoder:address:current")
from("direct:start")
.to("geocoder:address:current")