MAHeatMapVectorOverlay.h 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. //
  2. // MAHeatMapVectorOverlay.h
  3. // MAMapKit
  4. //
  5. // Created by ldj on 2019/7/25.
  6. // Copyright © 2019 Amap. All rights reserved.
  7. //
  8. #import "MAConfig.h"
  9. #if MA_INCLUDE_OVERLAY_HEATMAP
  10. #import "MAShape.h"
  11. #import "MAOverlay.h"
  12. ///热力图类型
  13. typedef NS_ENUM(NSInteger, MAHeatMapType)
  14. {
  15. MAHeatMapTypeSquare = 1, ///< 网格热力图
  16. MAHeatMapTypeHoneycomb = 2 ///< 蜂窝热力图
  17. };
  18. ///单个点对象
  19. @interface MAHeatMapVectorNode : NSObject
  20. ///经纬度
  21. @property (nonatomic, assign) CLLocationCoordinate2D coordinate;
  22. ///权重
  23. @property (nonatomic, assign) float weight;
  24. @end
  25. ///热力图展示节点(用以描述一个蜂窝或一个网格)
  26. @interface MAHeatMapVectorItem : NSObject
  27. ///中心点坐标
  28. @property (nonatomic, readonly) MAMapPoint center;
  29. ///当前热力值,求和后的权重
  30. @property (nonatomic, readonly) float intensity;
  31. ///落在此节点区域内的所有热力点的索引数组
  32. @property (nonatomic, readonly) NSArray<NSNumber *> *nodeIndices;
  33. @end
  34. ///该类用于定义热力图属性.
  35. @interface MAHeatMapVectorOverlayOptions : NSObject
  36. ///热力图类型 (默认为蜂窝类型MAHeatMapTypeHoneycomb)
  37. @property (nonatomic, assign) MAHeatMapType type;
  38. ///option选项是否可见. (默认YES)
  39. @property (nonatomic, assign) BOOL visible;
  40. ///MAHeatMapVectorNode array
  41. @property (nonatomic, strong) NSArray<MAHeatMapVectorNode *> *inputNodes;
  42. /**
  43. @verbatim
  44. 节点的宽 单位:米 负数按照0处理 default 2000
  45. —— —— —— ——
  46. 丨 丨 丨 丨
  47. 丨 丨 丨 丨
  48. —— —— —— ——
  49. 每个方框的宽就是 size(六边形同理)
  50. 两个方框之间的间隔就是 gap (六边形同理)
  51. @endverbatim
  52. */
  53. @property (nonatomic, assign) CLLocationDistance size;
  54. ///节点之间的间隔 单位:米 负数按照0处理。注意:改变gap可能会改变热力节点的计算,内部会用size+gap来计算热力,最终用size来画方框。
  55. @property (nonatomic, assign) CGFloat gap;
  56. ///颜色变化数组。 注意:colors和startPoints两数组长度必须一致且不能为0,
  57. @property (nonatomic, strong) NSArray<UIColor *> *colors;
  58. ///颜色变化起点,需为递增数组,区间为[0, 1]。 注意:colors和startPoints两数组长度必须一致且不能为0。例如:startPoints @[@(0), @(0.3),@(0.7)] 表示区间 [0,0.3)使用第一个颜色,区间[0.3,0.7)使用第二个颜色,区间[0.7,1]使用第三个颜色。注意:startPoints首位需设置成0,如果首位不是0,内部也会把首位当成0来处理。
  59. @property (nonatomic, strong) NSArray<NSNumber *> *startPoints;
  60. ///透明度,取值范围[0,1] ,default为1不透明
  61. @property (nonatomic, assign) CGFloat opacity;
  62. ///权重的最大值,default为0,表示不填,不填则取数组inputNodes中权重的最大值
  63. @property (nonatomic, assign) int maxIntensity;
  64. ///最小显示级别 default 3
  65. @property (nonatomic, assign) CGFloat minZoom;
  66. ///最大显示级别 default 20
  67. @property (nonatomic, assign) CGFloat maxZoom;
  68. @end
  69. ///矢量热力图,支持类型详见MAHeatMapType
  70. @interface MAHeatMapVectorOverlay : MAShape<MAOverlay>
  71. ///热力图的配置属性
  72. @property (nonatomic, strong) MAHeatMapVectorOverlayOptions *option;
  73. /**
  74. * @brief 根据配置属性option生成MAHeatMapVectorOverlay
  75. * @param option 热力图配置属性option
  76. * @return 新生成的热力图MAHeatMapVectorOverlay
  77. */
  78. + (instancetype)heatMapOverlayWithOption:(MAHeatMapVectorOverlayOptions *)option;
  79. @end
  80. #endif