std::shared_ptr<utymap::builders::BuilderContext> createBuilderContext(
     const utymap::QuadKey &quadKey,
     const std::string &stylesheet,
     std::function<void(const utymap::math::Mesh &)> meshCallback = nullptr,
     std::function<void(const utymap::entities::Element &)> elementCallback = nullptr) {
   return std::make_shared<utymap::builders::BuilderContext>(
       quadKey,
       *getStyleProvider(stylesheet),
       *getStringTable(),
       *getMeshPool(),
       *getElevationProvider(),
       meshCallback,
       elementCallback,
       cancelToken);
 }
Beispiel #2
0
 // Loads quadKey.
 void loadQuadKey(const char* styleFile, 
                  const utymap::QuadKey& quadKey, 
                  OnMeshBuilt* meshCallback,
                  OnElementLoaded* elementCallback, 
                  OnError* errorCallback)
 {
     safeExecute([&]() {
         auto styleProvider = getStyleProvider(styleFile);
         ExportElementVisitor elementVisitor(stringTable_, *styleProvider, quadKey.levelOfDetail, elementCallback);
         quadKeyBuilder_.build(quadKey, *styleProvider, getElevationProvider(quadKey),
             [&meshCallback](const utymap::meshing::Mesh& mesh) {
             // NOTE do not notify if mesh is empty.
             if (!mesh.vertices.empty()) {
                 meshCallback(mesh.name.data(),
                     mesh.vertices.data(), static_cast<int>(mesh.vertices.size()),
                     mesh.triangles.data(), static_cast<int>(mesh.triangles.size()),
                     mesh.colors.data(), static_cast<int>(mesh.colors.size()));
             }
         }, [&elementVisitor](const utymap::entities::Element& element) {
             element.accept(elementVisitor);
         });
     }, errorCallback);
 }
Beispiel #3
0
 // Preload elevation data. Not thread safe.
 void preloadElevation(const utymap::QuadKey& quadKey)
 {
     getElevationProvider(quadKey).preload(utymap::utils::GeoUtils::quadKeyToBoundingBox(quadKey));
 }