MATileOverlay.h 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. //
  2. // MATileOverlay.h
  3. // MAMapKitNew
  4. //
  5. // Created by xiaoming han on 14-1-24.
  6. // Copyright (c) 2014年 AutoNavi. All rights reserved.
  7. //
  8. #import "MAOverlay.h"
  9. /*!
  10. @brief 该类是覆盖在球面墨卡托投影上的图片tiles的数据源
  11. */
  12. @interface MATileOverlay : NSObject<MAOverlay>
  13. /*!
  14. @brief 根据指定的URLTemplate生成tileOverlay
  15. @param URLTemplate是一个包含"{x}","{y}","{z}","{scale}"的字符串,"{x}","{y}","{z}","{scale}"会被tile path的值所替换,并生成用来加载tile图片数据的URL 。例如: http://server/path?x={x}&y={y}&z={z}&scale={scale}。
  16. @return 以指定的URLTemplate字符串生成tileOverlay
  17. */
  18. - (id)initWithURLTemplate:(NSString *)URLTemplate;
  19. /*!
  20. @brief 默认tileSize 256x256
  21. */
  22. @property CGSize tileSize;
  23. /*!
  24. @brief overlay可以渲染的最大/最小缩放级别。当0级时,一个tile覆盖整个世界范围,1级时覆盖 1/4th 世界,2级时1/16th,以此类推。
  25. */
  26. @property NSInteger minimumZ;
  27. @property NSInteger maximumZ;
  28. @property (readonly) NSString *URLTemplate;
  29. /*!
  30. @brief 区域外接矩形,可用来设定tileOverlay的可渲染区域
  31. */
  32. @property (nonatomic) MAMapRect boundingMapRect;
  33. @end
  34. /*!
  35. @brief 记录某特定tile的据结构。contentScaleFactor根据设备的ScrennScale而定, 为1.0或2.0。
  36. */
  37. typedef struct {
  38. NSInteger x;
  39. NSInteger y;
  40. NSInteger z;
  41. CGFloat contentScaleFactor;
  42. } MATileOverlayPath;
  43. /*!
  44. @brief 子类可覆盖CustomLoading中的方法来自定义加载MATileOverlay的行为。
  45. */
  46. @interface MATileOverlay (CustomLoading)
  47. /*!
  48. @brief 以tile path生成URL。用于加载tile, 此方法默认填充URLTemplate
  49. @param tile path
  50. @return path相应的url
  51. */
  52. - (NSURL *)URLForTilePath:(MATileOverlayPath)path;
  53. /*!
  54. @brief 加载被请求的tile, 并以tile数据或加载tile失败error访问回调block; 默认实现为首先用 -URLForTilePath 去获取URL, 然后用异步NSURLConnection加载tile数据。当绘制大面积的tileOverlay时,建议重写此函数并实现缓存机制。
  55. @param tile path
  56. @param 用来传入tile数据或加载tile失败的error访问的回调block
  57. */
  58. - (void)loadTileAtPath:(MATileOverlayPath)path result:(void (^)(NSData *tileData, NSError *error))result;
  59. @end