Program Listing for File SpatialMapDataProvider.hpp

Return to documentation for file (src/navtk/geospatial/providers/SpatialMapDataProvider.hpp)

#pragma once

#include <memory>
#include <utility>
#include <vector>

#include <navtk/geospatial/sources/SpatialMapDataSource.hpp>
#include <navtk/not_null.hpp>

namespace navtk {
namespace geospatial {

class SpatialMapDataProvider {
public:
    virtual ~SpatialMapDataProvider() = default;

    SpatialMapDataProvider(not_null<std::shared_ptr<SpatialMapDataSource>> src);

    SpatialMapDataProvider(std::vector<not_null<std::shared_ptr<SpatialMapDataSource>>> srcs = {});

    void add_source(not_null<std::shared_ptr<SpatialMapDataSource>> src);

    virtual std::pair<bool, double> lookup_datum(double latitude, double longitude) const = 0;

protected:
    std::vector<not_null<std::shared_ptr<SpatialMapDataSource>>> sources;
};
}  // namespace geospatial
}  // namespace navtk