示例#1
0
    // Loads quadKey.
    void loadQuadKey(const char* styleFile, const utymap::QuadKey& quadKey, OnMeshBuilt* meshCallback,
                  OnElementLoaded* elementCallback, OnError* errorCallback)
    {
        try {
            auto& eleProvider = quadKey.levelOfDetail <= SrtmElevationLodStart
                ? flatEleProvider_
                : (utymap::heightmap::ElevationProvider&) srtmEleProvider_;

            // TODO: preloading is not thread safe: extract separate API function
            eleProvider.preload(utymap::utils::GeoUtils::quadKeyToBoundingBox(quadKey));

            utymap::mapcss::StyleProvider& styleProvider = *getStyleProvider(styleFile);
            QuadKeyElementVisitor elementVisitor(stringTable_, styleProvider, quadKey.levelOfDetail, elementCallback);
            quadKeyBuilder_.build(quadKey, styleProvider, eleProvider,
                [&meshCallback](const utymap::meshing::Mesh& mesh) {
                meshCallback(mesh.name.data(),
                    mesh.vertices.data(), mesh.vertices.size(),
                    mesh.triangles.data(), mesh.triangles.size(),
                    mesh.colors.data(), mesh.colors.size());
            }, [&elementVisitor](const utymap::entities::Element& element) {
                element.accept(elementVisitor);
            });
        }
        catch (std::exception& ex) {
            errorCallback(ex.what());
        }
    }
示例#2
0
 // Adds data to in-memory store.
 void addToInMemoryStore(const char* styleFile, const char* path, const utymap::BoundingBox& bbox, const utymap::LodRange& range, OnError* errorCallback)
 {
     try {
         geoStore_.add(InMemoryStorageKey, path, bbox, range, *getStyleProvider(styleFile).get());
     }
     catch (std::exception& ex) {
         errorCallback(ex.what());
     }
 }
示例#3
0
 // Adds element to in-memory store.
 void addInMemoryStore(const char* styleFile, const utymap::entities::Element& element, const utymap::LodRange& range, OnError* errorCallback)
 {
     try {
         geoStore_.add(InMemoryStorageKey, element, range, *getStyleProvider(styleFile).get());
     }
     catch (std::exception& ex) {
         errorCallback(ex.what());
     }
 }
示例#4
0
 // Adds data to persistent store.
 void addToPersistentStore(const char* styleFile, const char* path, const utymap::LodRange& range, OnError* errorCallback)
 {
     try {
         geoStore_.add(PersistentStorageKey, path, range, *getStyleProvider(styleFile).get());
     }
     catch (std::exception& ex) {
         errorCallback(ex.what());
     }
 }
示例#5
0
 // Adds data to in-memory store.
 void addToInMemoryStore(const char* styleFile, const char* path, const utymap::QuadKey& quadKey, OnError* errorCallback)
 {
     try {
         geoStore_.add(InMemoryStorageKey, path, quadKey, *getStyleProvider(styleFile).get());
     }
     catch (std::exception& ex) {
         errorCallback(ex.what());
     }
 }
示例#6
0
 // Adds data to store.
 void addToStore(const char* key, 
                 const char* styleFile, 
                 const char* path, 
                 const utymap::QuadKey& quadKey, 
                 OnError* errorCallback)
 {
     safeExecute([&]() {
         geoStore_.add(key, path, quadKey, *getStyleProvider(styleFile).get());
     }, errorCallback);
 }
示例#7
0
 // Adds element to in-memory store.
 void addToStore(const char* key,
                 const char* styleFile, 
                 const utymap::entities::Element& element, 
                 const utymap::LodRange& range, 
                 OnError* errorCallback)
 {
     safeExecute([&]() {
         geoStore_.add(key, element, range, *getStyleProvider(styleFile).get());
     }, errorCallback);
 }
示例#8
0
 // Adds data to store.
 void addToStore(const char* key, 
                 const char* styleFile, 
                 const char* path, 
                 const utymap::BoundingBox& bbox, 
                 const utymap::LodRange& range, 
                 OnError* errorCallback)
 {
     safeExecute([&]() {
         geoStore_.add(key, path, bbox, range, *getStyleProvider(styleFile).get());
     }, errorCallback);
 }
 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);
 }
示例#10
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);
 }
 std::shared_ptr<utymap::mapcss::StyleProvider> getStyleProvider(const std::string &stylesheetStr) {
   auto stylesheet = utymap::mapcss::MapCssParser().parse(stylesheetStr);
   return getStyleProvider(stylesheet);
 }
示例#12
0
 // Register stylesheet.
 void registerStylesheet(const char* path)
 {
     getStyleProvider(path);
 }