本文整理汇总了C++中mapnik::Map::getLayer方法的典型用法代码示例。如果您正苦于以下问题:C++ Map::getLayer方法的具体用法?C++ Map::getLayer怎么用?C++ Map::getLayer使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类mapnik::Map
的用法示例。
在下文中一共展示了Map::getLayer方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: parameterize_map_language
static void parameterize_map_language(mapnik::Map &m, char * parameter) {
int i;
char * data = strdup(parameter);
char * tok;
char ** ctx;
char name_replace[256];
name_replace[0] = 0;
syslog(LOG_DEBUG, "Internationalizing map to language parameter: %s", parameter);
tok = strtok(data,",");
if (!tok) return; //No parameterization given
strncat(name_replace, ", coalesce(", 255);
while (tok) {
if (strcmp(tok,"_") == 0) {
strncat(name_replace,"name,", 255);
} else {
strncat(name_replace,"tags->'name:", 255);
strncat(name_replace, tok, 255);
strncat(name_replace,"',", 255);
}
tok = strtok(NULL, ",");
}
free(data);
name_replace[strlen(name_replace) - 1] = 0;
strncat(name_replace,") as name", 255);
for (i = 0; i < m.layer_count(); i++) {
mapnik::layer& l = m.getLayer(i);
mapnik::parameters params = l.datasource()->params();
if (params.find("table") != params.end()) {
if (boost::get<std::string>(params["table"]).find(",name") != std::string::npos) {
std::string str = boost::get<std::string>(params["table"]);
size_t pos = str.find(",name");
str.replace(pos,5,name_replace);
params["table"] = str;
#if MAPNIK_VERSION >= 200200
std::shared_ptr<mapnik::datasource> ds = mapnik::datasource_cache::instance().create(params);
#else
std::shared_ptr<mapnik::datasource> ds = mapnik::datasource_cache::instance()->create(params);
#endif
l.set_datasource(ds);
}
}
}
}