#ifndef MAPDETECTOR_H
#define MAPDETECTOR_H

#include "localize_utils/utils.h"
#include "localize_utils/pcl_point_type.h"
#include <GeographicLib/LocalCartesian.hpp>
#include <pcl/octree/octree.h>
#include "poseguesser.h"

using namespace GeographicLib;
using namespace boost::filesystem;

namespace juefx{

class MapDetector
{
public:
    using Ptr = boost::shared_ptr<MapDetector>;
    MapDetector();

    void Reset();

    static MapDetector::Ptr Instance();

    void HandleMapFolder(const string& mapFolder);

    vector<string> GetCloseMap(const Vector3d &blh, float distance);
private:
    vector<string> GetMapDirs(const string& mapFolder);

    void ConfigMaps(const vector<string>& mapDirs);
private:
    vector<PoseGuesser::Ptr> poseGuesserVec_;
};

} // end of namespace

#endif // MAPDETECTOR_H