47 #ifdef CHECK_MEMORY_LEAKS
49 #endif // CHECK_MEMORY_LEAKS
170 if (inputStorage.
readInt() != 2) {
181 if (inputStorage.
readInt() != 3) {
213 std::string warning =
"";
244 outputStorage.
writeInt((
int) ids.size());
256 std::pair<MSLane*, SUMOReal>
258 std::pair<MSLane*, SUMOReal> result;
259 std::vector<std::string> allEdgeIds;
263 for (std::vector<std::string>::iterator itId = allEdgeIds.begin(); itId != allEdgeIds.end(); itId++) {
265 for (std::vector<MSLane*>::const_iterator itLane = allLanes.begin(); itLane != allLanes.end(); itLane++) {
266 const SUMOReal newDistance = (*itLane)->getShape().distance(pos);
267 if (newDistance < minDistance) {
268 minDistance = newDistance;
269 result.first = (*itLane);
274 result.second = result.first->getShape().nearest_offset_to_point2D(pos,
false);
285 if (laneIndex < 0 || laneIndex >= (
int)edge->
getLanes().size()) {
289 if (pos < 0 || pos > lane->
getLength()) {
299 std::pair<MSLane*, SUMOReal> roadPos;
307 switch (srcPosType) {
318 cartesianPos.
set(x, y);
327 std::string roadID = inputStorage.
readString();
333 z = cartesianPos.
z();
352 switch (destPosType) {
358 outputStorage.
writeString(roadPos.first->getEdge().getID());
360 const std::vector<MSLane*> lanes = roadPos.first->getEdge().getLanes();
361 outputStorage.
writeUnsignedByte((
int)distance(lanes.begin(), find(lanes.begin(), lanes.end(), roadPos.first)));
394 std::pair<const MSLane*, SUMOReal> roadPos1;
395 std::pair<const MSLane*, SUMOReal> roadPos2;
402 std::string roadID = inputStorage.
readString();
405 pos1 = roadPos1.first->getShape().positionAtOffset(roadPos1.second);
432 std::string roadID = inputStorage.
readString();
435 pos2 = roadPos2.first->getShape().positionAtOffset(roadPos2.second);
463 if ((roadPos1.first == roadPos2.first) && (roadPos1.second <= roadPos2.second)) {
465 distance = roadPos2.second - roadPos1.second;
470 MSRoute route(
"", newRoute,
false, 0, std::vector<SUMOVehicleParameter::Stop>());
471 distance = route.
getDistanceBetween(roadPos1.second, roadPos2.second, &roadPos1.first->getEdge(), &roadPos2.first->getEdge());