bool acceptTypes(SearchQuery* req, std::vector<tag_value>& types, MapIndex* root) { RenderingRuleSearchRequest* r = req->req; bool accept = true; for (std::vector<tag_value>::iterator type = types.begin(); type != types.end(); type++) { for (int i = 1; i <= 3; i++) { r->setIntFilter(r->props()->R_MINZOOM, req->zoom); r->setStringFilter(r->props()->R_TAG, type->first); r->setStringFilter(r->props()->R_VALUE, type->second); if (r->search(i, false)) { return true; } } r->setStringFilter(r->props()->R_TAG, type->first); r->setStringFilter(r->props()->R_VALUE, type->second); if (r->search(RenderingRulesStorage::TEXT_RULES, false)) { return true; } } return false; }
void testRenderingRuleStorage(const char* basePath, const char* name) { string filePath = string(basePath) + string(name); RenderingRulesStorage* st = new RenderingRulesStorage(filePath.c_str()); st->parseRulesFromXmlInputStream(filePath.c_str(), new BasePathRenderingRulesStorageResolver(string(basePath))); st->printDebug(RenderingRulesStorage::TEXT_RULES); RenderingRuleSearchRequest* searchRequest = new RenderingRuleSearchRequest(st); searchRequest->setStringFilter(st->PROPS.R_TAG, "highway"); searchRequest->setStringFilter(st->PROPS.R_VALUE, "motorway"); searchRequest->setIntFilter(st->PROPS.R_LAYER, 1); searchRequest->setIntFilter(st->PROPS.R_MINZOOM, 15); searchRequest->setIntFilter(st->PROPS.R_MAXZOOM, 15); // searchRequest.setBooleanFilter(storage.PROPS.R_NIGHT_MODE, true); // searchRequest.setBooleanFilter(storage.PROPS.get("hmRendered"), true); bool res = searchRequest->search(RenderingRulesStorage::LINE_RULES, true); printf("Result %d\n", res); searchRequest->printDebugResult(); }