ios - 自定义注释 View 未显示在 map 上

标签 ios objective-c mkannotationview

您好,我正在尝试在 map View 中创建自定义注释。在 map View 中,当用户单击图钉时,我在 map 上有多个图钉制作器,我想显示一些文本和按钮,因此尝试创建自定义注释 View ,但它不起作用。

我的代码

#import <MapKit/MapKit.h>
#import <GoogleMaps/GoogleMaps.h>
      @interface myviewcon : UIViewController<MKMapViewDelegate>
      @property (strong, nonatomic) IBOutlet MKMapView *mpview;

    @end

viewdidload 中我的 MKPointAnnotation 代码

for (NSDictionary *dic in [jsonArray1 valueForKey:@"houses"]) {


      MKPointAnnotation *annotation = [[MKPointAnnotation alloc]init];
      NSString *name=[dic valueForKey:@"building_name"];

      CLLocationCoordinate2D placeCoord;

      placeCoord.latitude=[[dic objectForKey:@"lat"] doubleValue];
      placeCoord.longitude=[[dic objectForKey:@"lng"] doubleValue];



      [annotation setCoordinate:placeCoord];
      [annotation setTitle:name];
      [mpview addAnnotation:annotation];

      }

还有我的自定义 Annotaionview 代码

  - (MKAnnotationView *)mapView:(MKMapView *)mV viewForAnnotation:(id <MKAnnotation>)annotation{

    MKAnnotationView *anview = nil;

    UIButton *btnViewVenue = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
    anview.rightCalloutAccessoryView=btnViewVenue;
    anview.enabled = YES;
    anview.canShowCallout = YES;
    anview.multipleTouchEnabled = NO;

    return anview;
  }

当用户单击 map 上的图钉制作器时,我使用上面的代码来制作自定义 View ,我已经使用文本和按钮制作了 View ,我已经厌倦了这样的操作,但它不起作用我已经检查了委托(delegate)调用的断点但它不起作用,请告诉我如何解决这个问题。

提前致谢。

最佳答案

要自定义注释,请使用:

    -(MKAnnotationView *)mapView:(MKMapView *)mV viewForAnnotation:(id <MKAnnotation>)annotation 

这里只需添加您需要的 subview

- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view {

    UIView *test = [[UIView alloc]initWithFrame:CGRectMake(view.frame.origin.x - 12.5, view.frame.origin.y - 45, 50, 50)];
    test.backgroundColor = [UIColor redColor];
    [_mapView addSubview:test];
}

这里只需从 superView 中删除您的自定义 callOutView

- (void)mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKAnnotationView *)view

关于ios - 自定义注释 View 未显示在 map 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29296493/

相关文章:

iphone - 如何重置或清除 OpenGLES(iPhone) 中的 glVertexAttribPointer 值?

ios - OCMock 测试分配对象并调用方法

ios-sim 停止工作 "NSCFString containsString"错误

ios - 在具有 UITableView 的 UICollectionView 中拖放

iOS MKAnnotationView LongPressGestureRecognizer

objective-c - 使用 NSViewAnimation 使 NSOpenGLView 淡入淡出

objective-c - 将工具栏与多个 NSViewController 一起使用

ios - 重建应用程序时推送 token 会改变吗?

iphone - 如何在 map View 中添加自定义标注 View

ios - 检查是否单击了注释标注