Geocoder Component
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:
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-geocoder</artifactId>
<version>x.x.x</version>
</dependency>
URI format
geocoder:address:name[?options]
geocoder:latlng:latitude,longitude[?options]
Options
Property |
Default |
Description |
language |
en |
The language to use. |
You can append query options to the URI in the following format, ?option=value&option=value&...
Exchange data format
Camel will deliver the body as a com.google.code.geocoder.model.GeocodeResponse type.
Message Headers
Header |
Description |
CamelGeoCoderStatus |
Status code from the geocoder library. If status is GeocoderStatus.OK then additional headers is enriched |
CamelGeoCoderAddress |
The formatted address |
CamelGeoCoderLatlng |
The latitude and longitude of the location. Separated by comma. |
CamelGeoCoderCountryLong |
The country long name. May only be available in latlng mode. |
CamelGeoCoderCountryShort |
The country short name. May only be available in latlng mode. |
Samples
In the example below we get the latitude and longitude for 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");
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}")
Which will log
Location 285 Bedford Avenue, Brooklyn, NY 11211, USA is at lat/lng: 40.71412890,-73.96140740 and in country US