...
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. |
| {{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 |
{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
...
...
.
...
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 |
---|
=confluenceTableSmall} || 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. | {div} Notice not all headers may be provided depending on available data and mode in use (address vs latlng). 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") {code} |