需要在 IOS 的 mapview 上添加一个固定的叠加层

Posted

技术标签:

【中文标题】需要在 IOS 的 mapview 上添加一个固定的叠加层【英文标题】:Need to add a Fixed Overlay like on mapview in IOS 【发布时间】:2014-12-10 06:34:57 【问题描述】:

我需要创建一个地图视图界面,​​类似于 ios 中的 OLA Cabs 应用程序。我真正想做的是修复 mapView 上的覆盖并允许用户滚动地图视图。为了使叠加层可以固定在用户想要的任何位置,我在 iOS 和 MapKit 中搜索了很多关于叠加层的信息,但无法实现。如果有人能给我实现这一目标的提示,我将不胜感激。这是屏幕截图

此处注释保持固定,您可以在其上移动地图视图,这样当您停止地图视图时,叠加层将指向您停止的新位置

【问题讨论】:

【参考方案1】:

Click here to download demo...

创建一个修复MKAnnotation 和图像视图对象,以动画化地图视图中的位置变化效果。

@property (nonatomic, strong) CustomAnnotation      *fixAnnotation;
@property (nonatomic, strong) UIImageView           *annotationImage;

viewDidLoad()方法中添加这段代码:

 // Fix annotation
    _fixAnnotation = [[CustomAnnotation alloc] initWithTitle:@"Fix annotation" subTitle:@"Location" detailURL:nil location:self.mapView.userLocation.coordinate];
    [self.mapView addAnnotation:self.fixAnnotation];

    // Annotation image.
    CGFloat width = 64;
    CGFloat height = 64;
    CGFloat margiX = self.mapView.center.x - (width / 2);
    CGFloat margiY = self.mapView.center.y - (height / 2) - 32;
    // 32 is half size for navigationbar and status bar height to set exact location for image.

    _annotationImage = [[UIImageView alloc] initWithFrame:CGRectMake(margiX, margiY, width, height)];
    [self.annotationImage setImage:[UIImage imageNamed:@"mapannotation.png"]];

现在必须在您拖动地图视图并添加看起来像注释的图像时删除图像。完成后添加注释并从地图视图中删除图像。

- (void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated 
    NSLog(@"Region will changed...");
    [self.mapView removeAnnotation:self.fixAnnotation];
    [self.mapView addSubview:self.annotationImage];




- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated 
    NSLog(@"Region did changed...");
    [self.annotationImage removeFromSuperview];
    CLLocationCoordinate2D centre = [mapView centerCoordinate];
    self.fixAnnotation.coordinate = centre;
    [self.mapView addAnnotation:self.fixAnnotation];

【讨论】:

【参考方案2】:

它不是地图注释覆盖,它是一个普通的UIImageView,它已经放置在MKMapView上,它总是用来获取中心点的经纬度地图。

希望这将是实现您的目标的简单方法。

@Kampai 已为您添加了相同的代码。

【讨论】:

以上是关于需要在 IOS 的 mapview 上添加一个固定的叠加层的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 ios 的 mapView 上集群 MKPolygon

iOS mapview 自动布局问题

群集注释图钉需要更多时间才能在 Mapview 上添加它们

React Native mapview:标记未在IOS上显示

通过单击 MapView 启动 ios 地图应用程序

iOS开发学习之MapKit