Fuse 6 is no longer supported
As of February 2025, Red Hat Fuse 6 is no longer supported. If you are using Fuse 6, please upgrade to Red Hat build of Apache Camel.Este conteúdo não está disponível no idioma selecionado.
Chapter 42. Geocoder
Geocoder Component Copiar o linkLink copiado para a área de transferência!
Copiar o linkLink copiado para a área de transferência!
Available as of Camel 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:
URI format Copiar o linkLink copiado para a área de transferência!
Copiar o linkLink copiado para a área de transferência!
geocoder:address:name[?options] geocoder:latlng:latitude,longitude[?options]
geocoder:address:name[?options]
geocoder:latlng:latitude,longitude[?options]
Options Copiar o linkLink copiado para a área de transferência!
Copiar o linkLink copiado para a área de transferência!
Property | Default | Description |
---|---|---|
language
|
en
|
The language to use. |
headersOnly
|
false
|
Whether to only enrich the Exchange with headers, and leave the body as-is. |
clientId
|
To use google premium with this client id | |
clientKey
|
To use google premium with this client key |
You can append query options to the URI in the following format,
?option=value&option=value&...
Exchange data format Copiar o linkLink copiado para a área de transferência!
Copiar o linkLink copiado para a área de transferência!
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.
Message Headers Copiar o linkLink copiado para a área de transferência!
Copiar o linkLink copiado para a área de transferência!
Header | Description |
---|---|
CamelGeoCoderStatus
|
Mandatory. Status code from the geocoder library. If status is GeocoderStatus.OK then additional headers is enriched
|
CamelGeoCoderAddress
|
The formatted address |
CamelGeoCoderLat
|
The latitude of the location. |
CamelGeoCoderLng
|
The longitude of the location. |
CamelGeoCoderLatlng
|
The latitude and longitude of the location. Separated by comma. |
CamelGeoCoderCity
|
The city long name. |
CamelGeoCoderRegionCode
|
The region code. |
CamelGeoCoderRegionName
|
The region name. |
CamelGeoCoderCountryLong
|
The country long name. |
CamelGeoCoderCountryShort
|
The country short name. |
Notice not all headers may be provided depending on available data and mode in use (address vs latlng).
Samples Copiar o linkLink copiado para a área de transferência!
Copiar o linkLink copiado para a área de transferência!
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")