@NonNull
    @WorkerThread
    public static List<Geocache> searchByFilter(@NonNull final GeocacheFilter filter, @NonNull final SuConnector connector) throws SuApiException {

        //for now we have to assume that SUConnector supports only SINGLE criteria search

        final List<BaseGeocacheFilter> filters = filter.getAndChainIfPossible();
        final OriginGeocacheFilter of = GeocacheFilter.findInChain(filters, OriginGeocacheFilter.class);
        if (of != null && !of.allowsCachesOf(connector)) {
            return new ArrayList<>();
        }
        final DistanceGeocacheFilter df = GeocacheFilter.findInChain(filters, DistanceGeocacheFilter.class);
        if (df != null) {
            return searchByCenter(df.getEffectiveCoordinate(), df.getMaxRangeValue() == null ? 20f : df.getMaxRangeValue(), connector);
        }
        final NameGeocacheFilter nf = GeocacheFilter.findInChain(filters, NameGeocacheFilter.class);
        if (nf != null && !StringUtils.isEmpty(nf.getStringFilter().getTextValue())) {
            return searchByKeyword(nf.getStringFilter().getTextValue(), connector);
        }
        final OwnerGeocacheFilter ownf = GeocacheFilter.findInChain(filters, OwnerGeocacheFilter.class);
        if (ownf != null && !StringUtils.isEmpty(ownf.getStringFilter().getTextValue())) {
            return searchByOwner(ownf.getStringFilter().getTextValue(), connector);
        }

        //by default, search around current position
        return searchByCenter(LocationDataProvider.getInstance().currentGeo().getCoords(), 20f, connector);
    }
Returns list of caches located around {@code center}

@param center    coordinates of the central point
@param radius    radius in km
@param connector Geocaching connector
@return list of caches located around {@code center}
main/src/main/java/cgeo/geocaching/connector/su/SuApi.java