From 03ca970f73af542456326b2fa277090ce0ea532f Mon Sep 17 00:00:00 2001 From: yy1717 <fctom1215@outlook.com> Date: 星期二, 11 八月 2020 18:33:51 +0800 Subject: [PATCH] 坐标 --- lib/src/main/cpp/master/comm_if.cpp | 115 +++++++++++++++++++++++++-------------------------------- 1 files changed, 51 insertions(+), 64 deletions(-) diff --git a/lib/src/main/cpp/master/comm_if.cpp b/lib/src/main/cpp/master/comm_if.cpp index 57cd155..3712f33 100644 --- a/lib/src/main/cpp/master/comm_if.cpp +++ b/lib/src/main/cpp/master/comm_if.cpp @@ -808,23 +808,6 @@ MakeLine(&road.startLine, &p1, &p2); } - /*if (itr->HasMember("stop_line")) { - const Value &a2 = (*itr)["stop_line"]; - - PointF p1, p2; - int n = 0; - - for (Value::ConstValueIterator itr2 = a2.Begin(); itr2 != a2.End(); ++itr2, ++n) { - DEBUG("缁撴潫绾� %d", (*itr2).GetInt()); - if (n == 0) { - p1 = mapPoints[(*itr2).GetInt()]; - } else if (n == 1) { - p2 = mapPoints[(*itr2).GetInt()]; - } - } - - MakeLine(&road.stopLine, &p1, &p2); - }*/ if (itr->HasMember("crossing") && itr->IsArray()) { const Value &a2 = (*itr)["crossing"]; @@ -838,14 +821,17 @@ if (itr2->HasMember("active")) { const Value &s = (*itr2)["active"]; temp.active = s.GetInt(); + DEBUG("璺彛鍔ㄤ綔 %d", temp.active); } if (itr2->HasMember("stop_flag")) { const Value &s = (*itr2)["stop_flag"]; temp.stopFlag = s.GetInt(); + DEBUG("璺彛鍋滆溅 %d", temp.stopFlag); } if (itr2->HasMember("tts")) { const Value &s = (*itr2)["tts"]; temp.tts = s.GetString(); + DEBUG("璺彛鎻愮ず %s", temp.tts.c_str()); } if (itr2->HasMember("line")) { const Value &s = (*itr2)["line"]; @@ -870,20 +856,6 @@ road.stopLine.assign(crossing.begin(), crossing.end()); } - if (itr->HasMember("active")) { - const Value &s = (*itr)["active"]; - DEBUG("璺彛鍔ㄤ綔 %d", s.GetInt()); - - road.active = s.GetInt(); - } - if (itr->HasMember("tts")) { - const Value &s = (*itr)["tts"]; - road.tts = s.GetString(); - } - if (itr->HasMember("stop_flag")) { - const Value &s = (*itr)["stop_flag"]; - road.stopFlag = s.GetInt(); - } if (itr->HasMember("next_road")) { const Value &s = (*itr)["next_road"]; road.targetRoad = s.GetInt(); @@ -947,49 +919,64 @@ DEBUG("娈垫暟閲� %d", a2.Size()); for (Value::ConstValueIterator itr2 = a2.Begin(); itr2 != a2.End(); ++itr2) { - DEBUG("\t绾挎暟閲� %d", (*itr2).Size()); separate_t sep; + if (!itr2->IsObject()) + break; + if (itr2->HasMember("lane_guide") && itr2->IsArray()) { + const Value &a3 = (*itr2)["lane_guide"]; - for (Value::ConstValueIterator itr3 = (*itr2).Begin(); itr3 != (*itr2).End(); ++itr3) { - DEBUG("\t\t鑺傛暟閲� %d", (*itr3).Size()); - vector<segment_t> sline; + for (Value::ConstValueIterator itr3 = a3.Begin(); itr3 != a3.End(); ++itr3) { + lane_direct_t temp; - for (Value::ConstValueIterator itr4 = (*itr3).Begin(); itr4 != (*itr3).End(); ++itr4) { - const Value &type = (*itr4)["type"]; - const Value &line = (*itr4)["line"]; + if (itr3->HasMember("head_tail")) { + const Value &a4 = (*itr3)["head_tail"]; + int n = 0; - segment_t seg; + for (Value::ConstValueIterator itr4 = a4.Begin(); itr4 != a4.End(); ++itr4, ++n) { + if (n == 0) + temp.start = mapPoints[(*itr4).GetInt()]; + else if (n == 1) + temp.end = mapPoints[(*itr4).GetInt()]; + } + } + if (itr3->HasMember("guide")) { + const Value &a4 = (*itr3)["guide"]; - DEBUG("\t\t\t鑺傜被鍨� = %d", type.GetInt()); - seg.character = type.GetInt(); - - if ((*itr4).HasMember("left_lane_direct")) { - const Value &dir = (*itr4)["left_lane_direct"]; - DEBUG("\t\t\t宸﹁溅閬撴柟鍚� %d", dir.GetInt()); - seg.left_lane_direct = dir.GetInt(); - } else { - seg.left_lane_direct = 0; + for (Value::ConstValueIterator itr4 = a4.Begin(); itr4 != a4.End(); ++itr4) { + temp.direct.push_back((*itr4).GetInt()); + } } - if ((*itr4).HasMember("right_lane_direct")) { - const Value &dir = (*itr4)["right_lane_direct"]; - DEBUG("\t\t\t鍙宠溅閬撴柟鍚� %d", dir.GetInt()); - seg.right_lane_direct = dir.GetInt(); - } else { - seg.right_lane_direct = 0; - } - - for (Value::ConstValueIterator itr5 = line.Begin(); itr5 != line.End(); ++itr5) { - DEBUG("\t\t\t鐐� = %d", (*itr5).GetInt()); - - seg.points.push_back(mapPoints[(*itr5).GetInt()]); - } - - sline.push_back(seg); + sep.lane_direct.push_back(temp); } - sep.lines.push_back(sline); } + if (itr2->HasMember("lane_line") && itr2->IsArray() ) { + const Value &a3 = (*itr2)["lane_line"]; + DEBUG("\t绾挎暟閲� %d", a3.Size()); + for (Value::ConstValueIterator itr3 = a3.Begin(); itr3 != a3.End(); ++itr3) { + DEBUG("\t\t鑺傛暟閲� %d", (*itr3).Size()); + vector<segment_t> sline; + for (Value::ConstValueIterator itr4 = (*itr3).Begin(); itr4 != (*itr3).End(); ++itr4) { + const Value &type = (*itr4)["type"]; + const Value &line = (*itr4)["line"]; + + segment_t seg; + + DEBUG("\t\t\t鑺傜被鍨� = %d", type.GetInt()); + seg.character = type.GetInt(); + + for (Value::ConstValueIterator itr5 = line.Begin(); itr5 != line.End(); ++itr5) { + DEBUG("\t\t\t鐐� = %d", (*itr5).GetInt()); + + seg.points.push_back(mapPoints[(*itr5).GetInt()]); + } + + sline.push_back(seg); + } + sep.lines.push_back(sline); + } + } road.separate.push_back(sep); } } -- Gitblit v1.8.0