ifish/Ifish/BMKMap3.3.0/BaiduMapAPI_Map.framework/Headers/BMKOverlayView.h

208 lines
7.6 KiB
Objective-C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* BMKOverlayView.h
* BMapKit
*
* Copyright 2011 Baidu Inc. All rights reserved.
*
*/
#import <UIKit/UIKit.h>
#import "BMKOverlay.h"
/// 该类是地图覆盖物View的基类提供绘制overlay的接口但本身并无实现所有地图覆盖物View需要继承自此类
@interface BMKOverlayView : UIView
{
@package
id <BMKOverlay> _overlay;
BMKMapRect _boundingMapRect;
CGAffineTransform _mapTransform;
id _geometryDelegate;
id _canDrawCache;
BOOL keepScale;
CFTimeInterval _lastTile;
CFRunLoopTimerRef _scheduledScaleTimer;
struct {
unsigned int keepAlive:1;
unsigned int levelCrossFade:1;
unsigned int drawingDisabled:1;
unsigned int usesTiledLayer:1;
} _flags;
//@private
// int geometrylayerID;
}
/// 设置该overlay的GeometryDelegate
- (void)setOverlayGeometryDelegate:(id)delegate;
/**
*初始化并返回一个overlay view
*@param overlay 关联的overlay对象
*@return 初始化成功则返回overlay view,否则返回nil
*/
- (id)initWithOverlay:(id <BMKOverlay>)overlay;
///关联的overlay对象
@property (nonatomic, readonly) id <BMKOverlay> overlay;
/**
*将直角坐标转为overlay view坐标
*@param mapPoint 直角坐标
*@return 对应的view坐标
*/
- (CGPoint)pointForMapPoint:(BMKMapPoint)mapPoint;
/**
*将overlay view坐标转为直角坐标
*@param point view坐标
*@return 对应的直角坐标
*/
- (BMKMapPoint)mapPointForPoint:(CGPoint)point;
/**
*将二维地图投影矩形转为overlay view矩形
*@param mapRect 二维地图投影矩形
*@return 对应的view矩形
*/
- (CGRect)rectForMapRect:(BMKMapRect)mapRect;
/**
*将overlay view区域转为二维地图投影区域
*@param rect 指定的view矩形
*@return 对应的二维地图投影矩形
*/
- (BMKMapRect)mapRectForRect:(CGRect)rect;
/**
*判断ovlerlay view是否准备绘制内容
*默认返回YES如果用户设为NO当需要绘制内容时要显示调用setNeedsDisplayInMapRect:zoomScale:方法
*@param mapRect 需要更新的地图矩形区域
*@param zoomScale 当前的缩放因子
*@return 如果view准备好绘制内容返回YES,否则返回NO
*/
- (BOOL)canDrawMapRect:(BMKMapRect)mapRect zoomScale:(BMKZoomScale)zoomScale;
/**
*绘制overlay view内容
*该方法默认不做任何事子类需要重载该方法来绘制view的内容
*@param mapRect 需要更新的地图矩形区域
*@param zoomScale 当前的缩放因子
*@param context 使用的graphics context
*/
- (void)drawMapRect:(BMKMapRect)mapRect zoomScale:(BMKZoomScale)zoomScale inContext:(CGContextRef)context;
/**
*使view在给定矩形的区域无效,系统将重绘该区域
*@param mapRect 需要更新的区域
*/
- (void)setNeedsDisplayInMapRect:(BMKMapRect)mapRect;
/**
*使用OpenGLES 绘制线
@param points 直角坐标点
@param pointCount 点个数
@param strokeColor 线颜色
@param lineWidth OpenGLES支持线宽尺寸
@param looped 是否闭合, 如polyline会设置NO, polygon会设置YES.
*/
- (void)renderLinesWithPoints:(BMKMapPoint *)points pointCount:(NSUInteger)pointCount strokeColor:(UIColor *)strokeColor lineWidth:(CGFloat)lineWidth looped:(BOOL)looped;
/**
*使用OpenGLES 绘制线
@param points 直角坐标点
@param pointCount 点个数
@param strokeColor 线颜色
@param lineWidth OpenGLES支持线宽尺寸
@param looped 是否闭合, 如polyline会设置NO, polygon会设置YES.
@param lineDash 是否虚线样式
*/
- (void)renderLinesWithPoints:(BMKMapPoint *)points pointCount:(NSUInteger)pointCount strokeColor:(UIColor *)strokeColor lineWidth:(CGFloat)lineWidth looped:(BOOL)looped lineDash:(BOOL)lineDash;
/**
*使用OpenGLES 按指定纹理绘制线
@param points 直角坐标点
@param pointCount 点个数
@param lineWidth OpenGLES支持线宽尺寸
@param textureID 纹理ID,使用- (void)loadStrokeTextureImage:(UIImage *)textureImage;加载
@param looped 是否闭合, 如polyline会设置NO, polygon会设置YES.
*/
- (void)renderTexturedLinesWithPoints:(BMKMapPoint *)points pointCount:(NSUInteger)pointCount lineWidth:(CGFloat)lineWidth textureID:(GLuint)textureID looped:(BOOL)looped;
/**
*使用OpenGLES 按指定纹理绘制线
@param points 直角坐标点
@param pointCount 点个数
@param lineWidth OpenGLES支持线宽尺寸
@param textureID 纹理ID,使用- (void)loadStrokeTextureImage:(UIImage *)textureImage;加载
@param looped 是否闭合, 如polyline会设置NO, polygon会设置YES.
@param tileTexture 是否纹理图片平铺绘制
@param keepScale 纹理图片是否缩放tileTexture为YES时生效
*/
- (void)renderTexturedLinesWithPoints:(BMKMapPoint *)points pointCount:(NSUInteger)pointCount lineWidth:(CGFloat)lineWidth textureID:(GLuint)textureID strokeColor:(UIColor *)strokeColor looped:(BOOL)looped tileTexture:(BOOL) tileTexture keepScale:(BOOL) keepScale;
/**
*使用OpenGLES 分段纹理绘制线
@param partPt 分段直角坐标点
@param lineWidth OpenGLES支持线宽尺寸
@param textureIndexs 分段纹理索引,使用- (void)loadStrokeTextureImage:(UIImage *)textureImage;加载
@param isFoucs 是否使用分段纹理绘制
*/
-(void)renderTexturedLinesWithPartPoints:(NSArray*)partPt lineWidth:(CGFloat)lineWidth textureIndexs:(NSArray*)textureIndexs isFocus:(BOOL) isFoucs;
/**
*使用OpenGLES 分段纹理绘制线/分段颜色绘制线
@param partPt 分段直角坐标点
@param lineWidth OpenGLES支持线宽尺寸
@param textureIndexs 分段纹理索引,使用- (BOOL)loadStrokeTextureImages:(UIImage *)textureImage;加载
@param isFoucs 是否使用分段纹理绘制
@param tileTexture 是否纹理图片平铺绘制
@param keepScale 纹理图片是否缩放tileTexture为YES时生效
*/
-(void)renderTexturedLinesWithPartPoints:(NSArray*)partPt lineWidth:(CGFloat)lineWidth textureIndexs:(NSArray*)textureIndexs isFocus:(BOOL) isFoucs tileTexture:(BOOL) tileTexture keepScale:(BOOL) keepScale;
/**
*使用OpenGLES 绘制区域
@param points 直角坐标点
@param pointCount 点个数
@param fillColor 填充颜色
@param usingTriangleFan YES对应GL_TRIANGLE_FAN, NO对应GL_TRIANGLES
*/
- (void)renderRegionWithPoints:(BMKMapPoint *)points pointCount:(NSUInteger)pointCount fillColor:(UIColor *)fillColor usingTriangleFan:(BOOL)usingTriangleFan;
/**
*使用OpenGLES 绘制区域(支持凹多边形)
@param points 直角坐标点
@param pointCount 点个数
@param fillColor 填充颜色
@param usingTriangleFan YES对应GL_TRIANGLE_FAN, NO对应GL_TRIANGLES
*/
- (void)renderATRegionWithPoint:(BMKMapPoint *)points pointCount:(NSUInteger)pointCount fillColor:(UIColor *)fillColor usingTriangleFan:(BOOL)usingTriangleFan;
/**
*绘制函数(子类需要重载来实现)
*/
- (void)glRender;
///关联的纹理对象ID
@property (nonatomic, readonly) GLuint strokeTextureID;
/**
*加载纹理图片
@param textureImage 图片对象opengl要求图片宽高必须是2的n次幂如果图片对象为nil则清空原有纹理
@return openGL纹理ID, 若纹理加载失败返回0
*/
- (GLuint)loadStrokeTextureImage:(UIImage *)textureImage;
/**
*加载分段纹理绘制 所需的纹理图片
@param textureImages 必须UIImage数组opengl要求图片宽高必须是2的n次幂否则返回NO无法分段纹理绘制
@return 是否成功
*/
- (BOOL)loadStrokeTextureImages:(NSArray *)textureImages;
/// 使用分段颜色绘制时必须设置内容必须为UIColor
/// 注:请使用 - (UIColor *)initWithRed:(CGFloat)red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha; 初始化UIColor。使用[UIColor ***Color]初始化时个别case转换成RGB后会有问题
@property (nonatomic, strong) NSArray *colors;
@end