174 {
175 CHECK_NOTNULL(parking_spaces);
176 const tinyxml2::XMLElement* sub_node = xml_node.FirstChildElement("object");
177 while (sub_node) {
178 std::string object_type;
179 std::string object_id;
180 int checker =
183 if (checker != tinyxml2::XML_SUCCESS) {
184 std::string err_msg = "Error parse object type.";
186 }
187
188 if (object_type == "parkingSpace") {
190 parking_space.mutable_id()->set_id(object_id);
191
192 double heading = 0.0;
193 checker = sub_node->QueryDoubleAttribute("heading", &heading);
194 if (checker != tinyxml2::XML_SUCCESS) {
195 std::string err_msg = "Error parse parking space heading.";
197 }
198 parking_space.set_heading(heading);
199
200 PbPolygon* polygon = parking_space.mutable_polygon();
201 const auto* outline_node = sub_node->FirstChildElement("outline");
202 if (outline_node == nullptr) {
203 std::string err_msg = "Error parse parking space outline";
205 }
207 parking_spaces->emplace_back(parking_space);
208 }
209 sub_node = sub_node->NextSiblingElement("object");
210 }
212}
apollo::hdmap::ParkingSpace PbParkingSpace