area.cc 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. #include "area.h"
  2. Area::Area(Json::Value& v) : Data(v)
  3. {
  4. m_data_type=DATA_TYPE_ZONE;
  5. set(v);
  6. }
  7. void Area::set(Json::Value& v)
  8. {
  9. m_name=v["name"].asString();
  10. m_coord = v["coordinates"];
  11. m_resource= v["resource"].asString();
  12. for(int i= 0; i<v["points"].size(); i++)
  13. m_points.push_back(v["points"][i]);
  14. }
  15. Area::Area(Way& v) : Data()
  16. {
  17. m_data_type=DATA_TYPE_ZONE;
  18. for(int i=0; i<v.m_keys.size(); i++)
  19. {
  20. if(v.m_keys[i]=="name") m_name=v.m_values[i];
  21. if(v.m_keys[i]=="resource") m_resource=v.m_values[i];
  22. }
  23. m_coord = Json::Value(Json::arrayValue);
  24. for(int i=0; i<v.m_nodes.size(); i++)
  25. {
  26. Json::Value a(Json::arrayValue);
  27. a[0]=v.m_nodes[i]->m_lon;
  28. a[1]=v.m_nodes[i]->m_lat;
  29. m_coord[i]=a;
  30. }
  31. for(int i=0; i<v.m_points.size(); i++)
  32. {
  33. m_points.push_back(Point(*v.m_points[i]));
  34. }
  35. }
  36. Area::Area() : Data()
  37. {
  38. m_data_type=DATA_TYPE_ZONE;
  39. m_name="null";
  40. m_coord = Json::Value(Json::arrayValue);
  41. m_resource= "null";
  42. }
  43. const std::string& Area::getName() { return m_name;}
  44. Json::Value Area::getJson(bool b)
  45. {
  46. Json::Value r(Json::objectValue);
  47. r["name"]=m_name;
  48. r["coordinates"]=m_coord;
  49. r["points"]=Json::Value(Json::arrayValue);
  50. r["resource"]=m_resource;
  51. for(unsigned int i=0; i<m_points.size(); i++)
  52. {
  53. r["points"][i]=m_points[i].toJson();
  54. }
  55. return r;
  56. }
  57. void Area::addPoint(Point& p)
  58. {
  59. if(!m_points.size())m_points.push_back(p);
  60. else m_points[0]=p;
  61. }
  62. Area::~Area()
  63. {
  64. //dtor
  65. }
  66. Area& Area::cast(Data& d)
  67. {
  68. if(d.getDataType ()!=DATA_TYPE_ZONE)
  69. assert(0);
  70. return (Area&)d;
  71. }