ios – Objective-C MapKit覆盖整个地图

ios – Objective-C MapKit覆盖整个地图,第1张

概述如何创建一个将整个地图着色为某种颜色的叠加层?然后我需要能够在它上面放置注释.有任何想法吗?谢谢. 你想要的是 MKOverlay和 MKOverlayView. 您可以在“相关示例代码”中提到的某个应用中找到Apple的代码.在上面的协议和类参考页面中. 编辑:根据评论,以前的代码不能正常工作.这是一个MKMapDimOverlay GitHub项目,您可以使用CocoaPods进行集成.我还在 如何创建一个将整个地图着色为某种颜色的叠加层?然后我需要能够在它上面放置注释.有任何想法吗?谢谢.解决方法 你想要的是 MKOverlay和 MKOverlayView.
您可以在“相关示例代码”中提到的某个应用中找到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覆盖整个地图所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1107682.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存