...
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
...
...
...
...
...
...
library.
...
Maven
...
users
...
will
...
need
...
to
...
add
...
the
...
following
...
dependency
...
to
...
their
...
pom.xml
...
for
...
this
...
component:
Code Block | ||||
---|---|---|---|---|
| ||||
{code:xml} <dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-geocoder</artifactId> <version>x.x.x</version> <!-- use the same version as your Camel core version --> </dependency> {code} h3. URI format {code} |
URI format
Code Block |
---|
geocoder:address:name[?options]
geocoder:latlng:latitude,longitude[?options]
{code}
h3. Options
{div:class=confluenceTableSmall}
|| Property || Default || Description ||
| {{language}} | {{en}} | The language to use. |
{div}
You can append query options to the URI in the following format, {{ |
Options
Div | |||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||
|
You can append query options to the URI in the following format, ?option=value&option=value&...
Proxy
The following proxy options can also be set on the GeoCoderEndpoint
Div | |||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||
|
Exchange data format
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
Div | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||
|
Notice not all headers may be provided depending on available data and mode in use (address vs latlng).
Samples
In the example below we get the latitude and longitude for Paris, France
Code Block |
---|
}} type. h3. Message Headers {div:class=confluenceTableSmall} || 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. | {div} h3. Samples In the example below we get the latitude and longitude for Paris, France {code} from("direct:start") .to("geocoder:address:Paris, France") {code} |
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:
Code Block |
---|
} template.sendBodyAndHeader("direct:start", "Hello", GeoCoderConstants.ADDRESS, "Copenhagen, Denmark"); {code} |
To
...
get
...
the
...
address
...
for
...
a
...
latitude
...
and
...
longitude
...
we
...
can
...
do:
Code Block |
---|
} 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}") {code} |
Which
...
will
...
log
Code Block |
---|
} Location 285 Bedford Avenue, Brooklyn, NY 11211, USA is at lat/lng: 40.71412890,-73.96140740 and in country US {code} |
To get the current location you can use "current" as the address as shown:
Code Block |
---|
from("direct:start")
.to("geocoder:address:current")
|