本文整理汇总了C++中WayPtr::setNodes方法的典型用法代码示例。如果您正苦于以下问题:C++ WayPtr::setNodes方法的具体用法?C++ WayPtr::setNodes怎么用?C++ WayPtr::setNodes使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WayPtr
的用法示例。
在下文中一共展示了WayPtr::setNodes方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: cleanWay
void WayCleaner::cleanWay(WayPtr way, const ConstOsmMapPtr& map)
{
const vector<long> nodeIds = way->getNodeIds();
if (isZeroLengthWay(way, map))
{
throw HootException("Cannot clean zero length way.");
}
QList<long> modifiedNodeIds = QVector<long>::fromStdVector(nodeIds).toList();
QList<long> nodeIdsTemp;
QList<Coordinate> coords;
for (size_t i = 0; i < nodeIds.size(); i++)
{
bool found = false;
if (nodeIdsTemp.contains(nodeIds[i]))
{
//the only duplicated nodes allowed are the first and last for a closed way
if (i == (nodeIds.size() - 1) && nodeIds[0] == nodeIds[i])
{
}
else
{
found = true;
}
}
else
{
nodeIdsTemp.append(nodeIds[i]);
}
const Coordinate coord = map->getNode(nodeIds[i])->toCoordinate();
if (coords.contains(coord))
{
//the only duplicated coords allowed are the first and last for a closed way, if the node ID's
//match
if (i == (nodeIds.size() - 1) && nodeIds[0] == nodeIds[i])
{
}
else
{
found = true;
}
}
else
{
coords.append(coord);
}
if (found)
{
modifiedNodeIds.removeAt(i);
}
}
way->setNodes(modifiedNodeIds.toVector().toStdVector());
}