本文整理汇总了C++中TagMap::begin方法的典型用法代码示例。如果您正苦于以下问题:C++ TagMap::begin方法的具体用法?C++ TagMap::begin怎么用?C++ TagMap::begin使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TagMap
的用法示例。
在下文中一共展示了TagMap::begin方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: StoreRelation
void OsmXmlEncodeBase::StoreRelation(int64_t objId, const class MetaData &metaData, const TagMap &tags,
const std::vector<std::string> &refTypeStrs, const std::vector<int64_t> &refIds,
const std::vector<std::string> &refRoles)
{
if(refTypeStrs.size() != refIds.size() || refTypeStrs.size() != refRoles.size())
throw std::invalid_argument("Length of ref vectors must be equal");
stringstream ss;
ss << " <relation id=\""<<objId<<"\"";
this->EncodeMetaData(metaData, ss);
if(tags.size() == 0 && refTypeStrs.size() == 0)
ss <<" />" << endl;
else
{
ss <<">" << endl;
//Write node IDs
for(size_t i=0; i<refTypeStrs.size(); i++)
ss << " <member type=\""<<escapexml(refTypeStrs[i])<<"\" ref=\""<<refIds[i]<<"\" role=\""<<escapexml(refRoles[i])<<"\" />" << endl;
//Write tags
for(TagMap::const_iterator it=tags.begin(); it!=tags.end(); it++)
ss << " <tag k=\""<<escapexml(it->first)<<"\" v=\""<<escapexml(it->second)<<"\" />" << endl;
ss << " </relation>" << endl;
}
*this << ss.str();
}
示例2: PrintTagMap
void PrintTagMap(const TagMap &tagMap)
{
for(TagMap::const_iterator it = tagMap.begin(); it != tagMap.end(); it++)
{
std::cout << it->first << "=" << it->second << std::endl;
}
}
示例3: EncodeZigzag
void O5mEncodeBase::StoreNode(int64_t objId, const class MetaData &metaData,
const TagMap &tags, double latIn, double lonIn)
{
this->write("\x10",1);
//Object ID
std::stringstream tmpStream;
int64_t deltaId = objId - this->lastObjId;
tmpStream << EncodeZigzag(deltaId);
this->lastObjId = objId;
this->EncodeMetaData(metaData, tmpStream);
//Position
int64_t lon = round(lonIn * 1e7);
int64_t deltaLon = lon - this->lastLon;
tmpStream << EncodeZigzag(deltaLon);
this->lastLon = lon;
int64_t lat = round(latIn * 1e7);
int64_t deltaLat = lat - this->lastLat;
tmpStream << EncodeZigzag(deltaLat);
this->lastLat = lat;
for (TagMap::const_iterator it=tags.begin(); it != tags.end(); it++)
this->WriteStringPair(it->first, it->second, tmpStream);
std::string binData = tmpStream.str();
std::string len = EncodeVarint(binData.size());
*this << len;
*this << binData;
}
示例4: WriteStart
void OsmXmlEncodeBase::WriteStart(const TagMap &customAttribs)
{
*this << "<?xml version='1.0' encoding='UTF-8'?>\n";
*this << "<osm";
TagMap::const_iterator it = customAttribs.find("version");
if(it != customAttribs.end())
{
*this << " version=\"";
*this << escapexml(it->second);
*this << "\"";
}
else
*this << " version=\"0.6\"";
it = customAttribs.find("generator");
if(it != customAttribs.end())
{
*this << " generator=\"";
*this << escapexml(it->second);
*this << "\"";
}
else
*this << " generator=\"cppo5m\"";
for(it = customAttribs.begin(); it != customAttribs.end(); it++)
{
if(it->first == "version" || it->first == "generator")
continue;
if(it->second.length() == 0)
continue;
*this << " ";
*this << escapexml(it->first);
*this <<"=\"";
*this << escapexml(it->second);
*this <<"\"";
}
*this << ">\n";
}
示例5: StoreNode
void OsmXmlEncodeBase::StoreNode(int64_t objId, const class MetaData &metaData,
const TagMap &tags, double lat, double lon)
{
stringstream ss;
ss.precision(9);
ss << " <node id=\""<<objId<<"\"";
this->EncodeMetaData(metaData, ss);
ss << fixed << " lat=\""<<lat<<"\" lon=\""<<lon<<"\"";
if(tags.size() == 0)
ss <<" />" << endl;
else
{
ss <<">" << endl;
//Write tags
for(TagMap::const_iterator it=tags.begin(); it!=tags.end(); it++)
{
ss << " <tag k=\""<<escapexml(it->first)<<"\" v=\""<<escapexml(it->second)<<"\" />" << endl;
}
ss << " </node>" << endl;
}
*this << ss.str();
}
示例6: StoreWay
void OsmXmlEncodeBase::StoreWay(int64_t objId, const class MetaData &metaData,
const TagMap &tags, const std::vector<int64_t> &refs)
{
stringstream ss;
ss << " <way id=\""<<objId<<"\"";
this->EncodeMetaData(metaData, ss);
if(tags.size() == 0 && refs.size() == 0)
ss <<" />" << endl;
else
{
ss <<">" << endl;
//Write node IDs
for(size_t i=0; i<refs.size(); i++)
ss << " <nd ref=\""<<refs[i]<<"\" />" << endl;
//Write tags
for(TagMap::const_iterator it=tags.begin(); it!=tags.end(); it++)
ss << " <tag k=\""<<escapexml(it->first)<<"\" v=\""<<escapexml(it->second)<<"\" />" << endl;
ss << " </way>" << endl;
}
*this << ss.str();
}
示例7: invalid_argument
void O5mEncodeBase::StoreRelation(int64_t objId, const class MetaData &metaData, const TagMap &tags,
const std::vector<std::string> &refTypeStrs, const std::vector<int64_t> &refIds,
const std::vector<std::string> &refRoles)
{
if(refTypeStrs.size() != refIds.size() || refTypeStrs.size() != refRoles.size())
throw std::invalid_argument("Length of ref vectors must be equal");
this->write("\x12", 1);
//Object ID
std::stringstream tmpStream;
int64_t deltaId = objId - this->lastObjId;
tmpStream << EncodeZigzag(deltaId);
this->lastObjId = objId;
//Store meta data
this->EncodeMetaData(metaData, tmpStream);
//Store referenced children
std::stringstream refStream;
for(size_t i=0; i<refTypeStrs.size(); i++)
{
const std::string &typeStr = refTypeStrs[i];
int64_t refId = refIds[i];
const std::string &role = refRoles[i];
char typeCode[2] = "0";
int64_t deltaRef = 0;
if(typeStr == "node")
{
typeCode[0] = '0';
deltaRef = refId - this->lastRefNode;
this->lastRefNode = refId;
}
if(typeStr == "way")
{
typeCode[0] = '1';
deltaRef = refId - this->lastRefWay;
this->lastRefWay = refId;
}
if(typeStr == "relation")
{
typeCode[0] = '2';
deltaRef = refId - this->lastRefRelation;
this->lastRefRelation = refId;
}
refStream << EncodeZigzag(deltaRef);
std::string typeCodeAndRole(typeCode);
typeCodeAndRole.append(role);
bool indexFound = false;
size_t refIndex = this->FindStringPairsIndex(typeCodeAndRole, indexFound);
if(indexFound)
{
refStream << EncodeVarint(refIndex);
}
else
{
refStream.write("\x00", 1); //String start byte
refStream << typeCodeAndRole;
refStream.write("\x00", 1); //String end byte
if(typeCodeAndRole.size() <= this->refTableLengthThreshold)
this->AddToRefTable(typeCodeAndRole);
}
}
std::string encRefs = refStream.str();
tmpStream << EncodeVarint(encRefs.size());
tmpStream << encRefs;
//Write tags
for (TagMap::const_iterator it=tags.begin(); it != tags.end(); it++)
this->WriteStringPair(it->first, it->second, tmpStream);
std::string binData = tmpStream.str();
*this << EncodeVarint(binData.size());
*this << binData;
}