diff options
| author | rsudev <rasch@munin-soft.de> | 2012-12-31 15:15:07 +0100 |
|---|---|---|
| committer | rsudev <rasch@munin-soft.de> | 2012-12-31 15:15:07 +0100 |
| commit | 2da05e50f79c650e3e1e344e1209cb8f2f951c71 (patch) | |
| tree | d849489dd41f10453cae9244169c77d961616d23 /main/src/cgeo/geocaching/connector/oc/OCXMLApiConnector.java | |
| parent | 6dad55f6843fee707c0d06df4b268563a7eb7374 (diff) | |
| download | cgeo-2da05e50f79c650e3e1e344e1209cb8f2f951c71.zip cgeo-2da05e50f79c650e3e1e344e1209cb8f2f951c71.tar.gz cgeo-2da05e50f79c650e3e1e344e1209cb8f2f951c71.tar.bz2 | |
Opencaching integration with oc11xml api
Implements load of cache details, coordinate search and viewport search
for opencaching.de based on oc11xml api
Diffstat (limited to 'main/src/cgeo/geocaching/connector/oc/OCXMLApiConnector.java')
| -rw-r--r-- | main/src/cgeo/geocaching/connector/oc/OCXMLApiConnector.java | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/main/src/cgeo/geocaching/connector/oc/OCXMLApiConnector.java b/main/src/cgeo/geocaching/connector/oc/OCXMLApiConnector.java new file mode 100644 index 0000000..3a2f42e --- /dev/null +++ b/main/src/cgeo/geocaching/connector/oc/OCXMLApiConnector.java @@ -0,0 +1,52 @@ +package cgeo.geocaching.connector.oc; + +import cgeo.geocaching.SearchResult; +import cgeo.geocaching.Settings; +import cgeo.geocaching.cgCache; +import cgeo.geocaching.connector.capability.ISearchByCenter; +import cgeo.geocaching.connector.capability.ISearchByGeocode; +import cgeo.geocaching.connector.capability.ISearchByViewPort; +import cgeo.geocaching.geopoint.Geopoint; +import cgeo.geocaching.geopoint.Viewport; +import cgeo.geocaching.utils.CancellableHandler; + +public class OCXMLApiConnector extends OCConnector implements ISearchByGeocode, ISearchByCenter, ISearchByViewPort { + + private final static double SEARCH_DISTANCE_LIMIT = 15.0; + private final static double NEARBY_SEARCH_DISTANCE = 5.0; + + public OCXMLApiConnector(String name, String host, String prefix) { + super(name, host, prefix); + } + + @Override + public SearchResult searchByGeocode(final String geocode, final String guid, CancellableHandler handler) { + final cgCache cache = OCXMLClient.getCache(geocode); + if (cache == null) { + return null; + } + return new SearchResult(cache); + } + + @Override + public SearchResult searchByCenter(final Geopoint center) { + return new SearchResult(OCXMLClient.getCachesAround(center, NEARBY_SEARCH_DISTANCE)); + } + + @Override + public SearchResult searchByViewport(final Viewport viewport, final String[] tokens) { + final Geopoint center = viewport.getCenter(); + double distance = center.distanceTo(viewport.bottomLeft) * 1.15; + if (distance > SEARCH_DISTANCE_LIMIT) { + distance = SEARCH_DISTANCE_LIMIT; + } + return new SearchResult(OCXMLClient.getCachesAround(center, distance)); + } + + @Override + public boolean isActivated() { + // currently only tested and working with oc.de + return Settings.isOCConnectorActive(); + } + +} |
