BMKTileLayer.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. //
  2. // BMKTileLayer.h
  3. // MapComponent
  4. //
  5. // Created by wzy on 15/8/7.
  6. // Copyright © 2015年 baidu. All rights reserved.
  7. //
  8. #ifndef BMKTileLayer_h
  9. #define BMKTileLayer_h
  10. #import "BMKOverlay.h"
  11. /**
  12. @brief 该类是覆盖在球面墨卡托投影上的图片tiles的数据源,是抽象类,不能直接使用该类添加瓦片图,需要使用其子类(BMKURLTileLayer或BMKSyncTileLayer)
  13. *瓦片图片是jpeg或者png格式,size为256x256
  14. */
  15. @interface BMKTileLayer : NSObject <BMKOverlay>
  16. /// tileLayer的可见最小Zoom值,默认3
  17. @property (nonatomic, assign) NSInteger minZoom;
  18. /// tileLayer的可见最大Zoom值,默认21,且不能小于minZoom
  19. @property (nonatomic, assign) NSInteger maxZoom;
  20. /// tileOverlay的可渲染区域,默认世界范围
  21. @property (nonatomic) BMKMapRect visibleMapRect;
  22. @end
  23. /**
  24. @brief 通过提供url模板的方法,提供数据源。不应该继承该类,且必须通过 initWithURLTemplate: 来初始化
  25. *瓦片图片是jpeg或者png格式,size为256x256
  26. */
  27. @interface BMKURLTileLayer : BMKTileLayer
  28. /// 同initWithURLTemplate:中的URLTemplate
  29. @property (readonly) NSString *URLTemplate;
  30. /*!
  31. @brief 根据指定的URLTemplate生成tileOverlay
  32. @param URLTemplate是一个包含"{x}","{y}","{z}"的字符串,"{x}","{y}"表示tile的坐标,"{z}"表示当tile显示的级别。"{x}","{y}","{z}"会被tile的坐标值所替换,并生成用来加载tile图片数据的URL 。例如: http://server/path?x={x}&y={y}&z={z}。
  33. @return 以指定的URLTemplate字符串生成tileOverlay
  34. */
  35. - (id)initWithURLTemplate:(NSString *)URLTemplate;
  36. /**
  37. @brief 清除当前瓦片图层缓存图片
  38. */
  39. - (BOOL)cleanTileDataCache;
  40. @end
  41. /**
  42. @brief 通过同步方法获取瓦片数据,是一个抽象类,需要通过继承该类,并重载 tileForX:y:zoom: 方法
  43. *瓦片图片是jpeg或者png格式,size为256x256
  44. */
  45. @interface BMKSyncTileLayer : BMKTileLayer
  46. /**
  47. @brief 通过同步方法获取瓦片数据,子类必须实现该方法
  48. 这个方法会在多个线程中调用,需要考虑线程安全
  49. @param (x, y, zoom)瓦片坐标
  50. @return (x, y, zoom)所对应瓦片的UIImage对象
  51. */
  52. - (UIImage *)tileForX:(NSInteger)x y:(NSInteger)y zoom:(NSInteger)zoom;
  53. @end
  54. /**
  55. @brief 通过异步方法获取瓦片数据,是一个抽象类,需要通过继承该类,并重载 loadTileForX:y:zoom:result: 方法
  56. *瓦片图片是jpeg或者png格式,size为256x256
  57. */
  58. @interface BMKAsyncTileLayer : BMKTileLayer
  59. /**
  60. @brief 通过异步方法获取瓦片数据,子类必须实现该方法
  61. @param (x, y, zoom)瓦片坐标
  62. @return result 用来传入瓦片数据或加载瓦片失败的error访问的回调block
  63. */
  64. - (void)loadTileForX:(NSInteger)x y:(NSInteger)y zoom:(NSInteger)zoom result:(void (^)(UIImage *tileImage, NSError *error))result;
  65. @end
  66. #endif /* BMKTileLayer_h */