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

前端之家收集整理的这篇文章主要介绍了ios – Objective-C MapKit覆盖整个地图前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何创建一个将整个地图着色为某种颜色的叠加层?然后我需要能够在它上面放置注释.有任何想法吗?谢谢.

解决方法

你想要的是 MKOverlayMKOverlayView.
您可以在“相关示例代码”中提到的某个应用中找到Apple的代码.在上面的协议和类参考页面中.

编辑:根据评论,以前的代码不能正常工作.这是一个MKMapDimOverlay GitHub项目,您可以使用CocoaPods进行集成.我还在答案中对以下代码进行了相关更改.

简要说明,以下是在整个地图上添加暗叠加层的代码.

您需要创建叠加层并将其添加到地图视图中.

  1. MKMapDimOverlay *dimOverlay = [[MKMapDimOverlay alloc] initWithMapView:MapView];
  2. [mapView addOverlay: dimOverlay];

在’viewForOverlay’委托方法中为特定的MKOverlay创建并返回MKOverlayView

  1. -(MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id<MKOverlay>)overlay {
  2. if([overlay isMemberOfClass:[MKMapDimOverlay class]]) {
  3. MKMapDimOverlayView *dimOverlayView = [[MKMapDimOverlayView alloc] initWithOverlay:overlay];
  4. return dimOverlayView;
  5. }
  6. }

由于您只需要覆盖地图的彩色叠加层,因此叠加层和叠加层视图的实现将非常简单.

DimOverlay.m

  1. @interface DimOverlay ()
  2. @property (nonatomic) CLLocationCoordinate2D dimOverlayCoordinates;
  3. @end
  4.  
  5. @implementation DimOverlay
  6.  
  7. -(id)initWithMapView:(MKMapView *)mapView {
  8. self = [super init];
  9. if(self)
  10. {
  11. self.dimOverlayCoordinates = mapView.centerCoordinate;
  12. }
  13. return self;
  14. }
  15.  
  16. -(CLLocationCoordinate2D)coordinate {
  17. return self.dimOverlayCoordinates;
  18. }
  19.  
  20. -(MKMapRect)boundingMapRect {
  21. return MKMapRectWorld;
  22. }
  23.  
  24. @end

DimOverlayView.m

  1. @implementation DimOverlayView
  2.  
  3. - (void)drawMapRect:(MKMapRect)mapRect
  4. zoomScale:(MKZoomScale)zoomScale
  5. inContext:(CGContextRef)ctx {
  6. /*
  7. You can allow custom colors and opacity values.
  8. Simply add UIColor and CGFloat properties in the overlay view class
  9. and use those properties instead of the default hardcodes values below.
  10. */
  11. CGContextSetAlpha(ctx,0.85);
  12. CGContextSetFillColorWithColor(ctx,[UIColor blackColor].CGColor);
  13. CGContextFillRect(ctx,[self rectForMapRect:mapRect]);
  14. }
  15.  
  16. @end

猜你在找的iOS相关文章