iOS MapView添加坐标为(0,0)的MKPointAnnotation不显示

时间:2019-02-14 09:39:09

标签: ios objective-c mkmapview

我正在尝试在MKMapView上添加注释。当坐标不是(0, 0)时,注释可以显示,但是当我将注释的坐标设置为(0,0)时,注释视图将无法显示。

在iPhone XS模拟器和设备上,仅显示一个注释(位置(10,0)),而位置(0,0)未显示。

(0,0)注释似乎添加在地图的底部,而不是非洲的西侧。

任何建议都值得赞赏。

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    // Add Annotation
    MKPointAnnotation *annotation = [[MKPointAnnotation alloc] init];
    annotation.coordinate = CLLocationCoordinate2DMake(0, 0);
    [self.mapView addAnnotation:annotation];
    MKPointAnnotation *annotationZero = [[MKPointAnnotation alloc] init];
    annotationZero.coordinate = CLLocationCoordinate2DMake(10, 0);
    [self.mapView addAnnotation:annotationZero];
}

#pragma mark - MKMapViewDelegate
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation {
    if ([annotation isKindOfClass:[MKPointAnnotation class]]) {
        static NSString *reuseIdentifier = @"map_annotation";
        MKAnnotationView *annotationView = [_mapView dequeueReusableAnnotationViewWithIdentifier:reuseIdentifier];
        if (annotationView == nil) {
            annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:reuseIdentifier];
        }
        annotationView.image = [UIImage imageNamed:@"annotation_icon"];
        return annotationView;
    }
    return nil;
}

1 个答案:

答案 0 :(得分:2)

我首先使用SwiftCLLocationCoordinate2DMake(0,0)进行了测试,但效果很好,因此问题与设备无关,而是特定于语言的 issue

您不能在 objective-c 中使用(0,0),而要使用DBL_MIN,它是可能的最小数字,例如:

CLLocationCoordinate2DMake(DBL_MIN, DBL_MIN)