Drop Pin在当前位置

时间:2014-05-28 22:01:28

标签: ios dictionary mkmapview

我正在构建一个iOS应用程序,并且需要能够在用户当前所在的位置放置一个引脚!出于某种原因,我一直在努力工作!我尝试了以下代码,但遇到了错误。

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

    if (annotation == mapView.userLocation)
    {

        MKPinAnnotationView *annView=[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:nil];
        annView.pinColor = MKPinAnnotationColorRed;
        annView.animatesDrop=TRUE;
        annView.canShowCallout = YES;
        annView.calloutOffset = CGPointMake(-5, 5);
        return annView;
        [annView release];



    }
}

错误是: 控制可以达到无效功能的结束。

非常感谢你的帮助! “ 欣赏它!

2 个答案:

答案 0 :(得分:5)

以下代码在Xcode iPhone模拟器中运行良好:

#import "ViewController.h"
@import MapKit;

@interface ViewController () <MKMapViewDelegate>

@property (weak, nonatomic) IBOutlet MKMapView *mapView;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    [self.mapView setDelegate:self];
    [self.mapView setShowsUserLocation:YES];
}

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation {

    // zoom to region containing the user location
    MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(userLocation.coordinate, 800, 800);
    [self.mapView setRegion:[self.mapView regionThatFits:region] animated:YES];

    // add the annotation
    MKPointAnnotation *point = [[MKPointAnnotation alloc] init];
    point.coordinate = userLocation.coordinate;
    point.title = @"The Location";
    point.subtitle = @"Sub-title";
    [self.mapView addAnnotation:point];
}

@end

答案 1 :(得分:0)

当一个方法有一个返回类型时,必须在所有条件下返回一些东西,你只返回if分支中的东西,否则返回。当if语句的计算结果为false时,编译器还要求您返回一些内容 - 这就是您收到编译错误的原因。

顺便提一下

 [annView release];

永远不会被执行,因为你在此之前就已经回来了。但你有什么理由说这个吗?即试图使用非ARC代码?你有没有从某个地方复制这一行(这是旧代码)