#ifndef __JFXMAP_MAPINFO_HPP_
#define __JFXMAP_MAPINFO_HPP_

#include "HdLib.h"
#include <cmath>
#include <iostream>
#include "MapTypes.hpp"

namespace jf {

class MapInfo {
   public:

    MapInfo();

    ~MapInfo();

   public:

    bool locateLinkandLane(Point pointIn, float Agdir, HdLinkId& hdLinkId,HdLaneId& hdLaneId);
    bool getCurrentLocationInfo(Point pointIn, float Agdir, HdLinkId &hdLinkId, HdLaneId &hdLaneId,int& speedLimitInfo, int64_t& LeftLaneEdgeId1, int64_t& LeftLaneEdgeId2,bool& LeftLane_Crossable, int64_t& RightLaneEdgeId1, int64_t& RightLaneEdgeId2,bool& RightLane_Crossable);
    bool CreateMapInfo_First( const HdLinkId &hdLinkId, const HdLaneId &hdLaneId, const Point pointIn, std::deque<HdLinkId>& hdLinkIdQueue, std::map<HdLinkId, std::map<int, Point>>& hdLinkIdQueueTable);
    bool CreateMapInfo_Second(const HdLinkId &hdLinkId, const HdLaneId &hdLaneId, const Point pointIn,std::deque<HdLinkId> &hdLinkIdQueue,std::map<HdLinkId, std::map<int, Point>> &hdLinkIdQueueTable,std::vector<HdEdge>& vctheEdgeResult);

   private:
    ShPtr_HdLib m_spHdLib;
    int nTgtLen;

};

}  // namespace jf

#endif