Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef TILE_MAP_TILE_MAP_VIEW_H_
00031 #define TILE_MAP_TILE_MAP_VIEW_H_
00032
00033 #include <string>
00034
00035 #include <boost/shared_ptr.hpp>
00036
00037 #include <tile_map/tile_source.h>
00038 #include <tile_map/texture_cache.h>
00039
00040 #include <swri_transform_util/transform.h>
00041
00042 namespace tile_map
00043 {
00044 class TileSource;
00045
00046 struct Tile
00047 {
00048 public:
00049 QString url;
00050 size_t url_hash;
00051 int32_t level;
00052 int32_t subdiv_count;
00053 double subwidth;
00054
00055 TexturePtr texture;
00056
00057 std::vector<tf::Vector3> points;
00058 std::vector<tf::Vector3> points_t;
00059 };
00060
00061 class TileMapView
00062 {
00063 public:
00064 TileMapView();
00065
00066 void ResetCache();
00067
00068 void SetTileSource(const boost::shared_ptr<TileSource>& tile_source);
00069
00070 void SetTransform(const swri_transform_util::Transform& transform);
00071
00072 void SetView(
00073 double latitude,
00074 double longitude,
00075 double scale,
00076 int32_t width,
00077 int32_t height);
00078
00079 void Draw();
00080
00081 private:
00082 boost::shared_ptr<TileSource> tile_source_;
00083
00084 swri_transform_util::Transform transform_;
00085
00086 int32_t level_;
00087
00088 int64_t center_x_;
00089 int64_t center_y_;
00090
00091 int64_t size_;
00092
00093 int32_t width_;
00094 int32_t height_;
00095
00096 std::vector<Tile> tiles_;
00097 std::vector<Tile> precache_;
00098
00099 TextureCachePtr tile_cache_;
00100
00101 void ToLatLon(int32_t level, double x, double y, double& latitude, double& longitude);
00102
00103 void InitializeTile(int32_t level, int64_t x, int64_t y, Tile& tile);
00104 };
00105 }
00106
00107 #endif // TILE_MAP_TILE_MAP_VIEW_H_