...
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] |
Options
Wiki Markup |
---|
{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,
...
?option=value&option=value&...
...
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
Wiki Markup |
---|
Headers {div:class=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).
Samples
In the example below we get the latitude and longitude for Paris, France
Code Block |
---|
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} |