1
0

landmark.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #ifndef __LAND_MARK_HPP__
  2. #define __LAND_MARK_HPP__
  3. #include <string>
  4. #include <vector>
  5. #include <map>
  6. #include <memory>
  7. #include <tuple>
  8. #include "point.h"
  9. enum DIRECTION_TYPE{
  10. NODIRECTORY = 0,
  11. EAST = 1,
  12. SOURTH = 2,
  13. WEST = 3,
  14. NORTH = 4
  15. };
  16. struct LandmarkInfo:point
  17. {
  18. LandmarkInfo()
  19. :landmark_id(0)
  20. ,landmark_name("")
  21. ,map_id(0)
  22. ,area_id(0)
  23. {}
  24. LandmarkInfo(point &p,int id,std::string & n,int mapid, int areaid)
  25. :point(p)
  26. ,landmark_id(id)
  27. ,landmark_name(n)
  28. ,map_id(mapid)
  29. ,area_id(areaid)
  30. {}
  31. int landmark_id;
  32. std::string landmark_name;
  33. int map_id;
  34. int area_id;
  35. };
  36. struct map_direction
  37. {
  38. map_direction(int mapid,int angle)
  39. :map_id(mapid)
  40. ,north_angle(angle)
  41. {}
  42. int map_id;
  43. int north_angle;
  44. };
  45. struct Landmark_list
  46. {
  47. std::vector<std::shared_ptr<LandmarkInfo>> m_v;
  48. std::map<int,std::shared_ptr<map_direction>> m_map;
  49. static Landmark_list * instance();
  50. void init_from_db();
  51. void init_landmarkInfo();
  52. void init_mapDirection();
  53. //landmarkId landmark_direction landmark_dis
  54. std::tuple<int,int,double> get(int mapid,int areaid,const point &pt);
  55. DIRECTION_TYPE GetDirectionType(point card_point, point landmark_point, int map_id);
  56. };
  57. #endif