
您可以在“相关示例代码”中提到的某个应用中找到Apple的代码.在上面的协议和类参考页面中.
编辑:根据评论,以前的代码不能正常工作.这是一个MKMapDimOverlay GitHub项目,您可以使用CocoaPods进行集成.我还在答案中对以下代码进行了相关更改.
简要说明,以下是在整个地图上添加暗叠加层的代码.
您需要创建叠加层并将其添加到地图视图中.
MKMapDimOverlay *dimOverlay = [[MKMapDimOverlay alloc] initWithMapVIEw:MapVIEw];[mapVIEw addOverlay: dimOverlay];
在’vIEwForOverlay’委托方法中为特定的MKOverlay创建并返回MKOverlayVIEw
-(MKOverlayVIEw *)mapVIEw:(MKMapVIEw *)mapVIEw vIEwForOverlay:(ID<MKOverlay>)overlay { if([overlay isMemberOfClass:[MKMapDimOverlay class]]) { MKMapDimOverlayVIEw *dimOverlayVIEw = [[MKMapDimOverlayVIEw alloc] initWithOverlay:overlay]; return dimOverlayVIEw; }} 由于您只需要覆盖地图的彩色叠加层,因此叠加层和叠加层视图的实现将非常简单.
DimOverlay.m
@interface DimOverlay ()@property (nonatomic) CLLocationCoordinate2D dimOverlayCoordinates;@end@implementation DimOverlay-(ID)initWithMapVIEw:(MKMapVIEw *)mapVIEw { self = [super init]; if(self) { self.dimOverlayCoordinates = mapVIEw.centerCoordinate; } return self;}-(CLLocationCoordinate2D)coordinate { return self.dimOverlayCoordinates;}-(MKMapRect)boundingMapRect { return MKMapRectWorld;}@end DimOverlayVIEw.m
@implementation DimOverlayVIEw- (voID)drawMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale inContext:(CGContextRef)ctx { /* You can allow custom colors and opacity values. Simply add UIcolor and CGfloat propertIEs in the overlay vIEw class and use those propertIEs instead of the default hardcodes values below. */ CGContextSetAlpha(ctx,0.85); CGContextSetFillcolorWithcolor(ctx,[UIcolor blackcolor].CGcolor); CGContextFillRect(ctx,[self rectForMapRect:mapRect]);}@end 总结 以上是内存溢出为你收集整理的ios – Objective-C MapKit覆盖整个地图全部内容,希望文章能够帮你解决ios – Objective-C MapKit覆盖整个地图所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)