MKPointAnnotation无法协调

时间:2013-10-25 10:30:39

标签: iphone mkmapview mapkit mkannotation

在我的mapView应用程序中,我正在尝试进行注释,不添加注释我得到了mapView但是当我尝试添加注释时,只有注释标记可见,地图变得不可见。

添加注释之前:

代码:

 [super viewDidLoad];
mapView = [[MKMapView alloc]initWithFrame:CGRectMake(0, 0, 320, elf.view.frame.size.height)];
mapView.showsUserLocation = YES;
mapView.mapType = MKMapTypeStandard;
mapView.delegate = self;
[self.view addSubview:mapView]; 

图像:

enter image description here
添加注释后:

代码:

 [super viewDidLoad];
    mapView = [[MKMapView alloc]initWithFrame:CGRectMake(0, 0, 320, self.view.frame.size.height)];
    mapView.showsUserLocation = YES;
    mapView.mapType = MKMapTypeStandard;
    mapView.delegate = self;
    [self.view addSubview:mapView]; 



    MKUserLocation *userLocation = mapView.userLocation;
    MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(userLocation.location.coordinate, 20, 20);
    [mapView setRegion:region];

   MKPointAnnotation *annotation = [[MKPointAnnotation alloc]init];
    annotation.coordinate = userLocation.location.coordinate;
    annotation.title = @"Here you r";
    annotation.subtitle = @"Pondy";
    [mapView addAnnotation:annotation];

图像:

enter image description here

我需要在地图中显示注释。提前谢谢。

5 个答案:

答案 0 :(得分:2)

尝试更改MKCoordinateRegionMakeWithDistance的值。

答案 1 :(得分:1)

原因是模拟器的位置设置为NONE。

按照以下步骤操作,您将获得答案...... `

          1) Open your simulator. 
          2) go to Debug menu
          3) Select Location.
          3) Select Custom Location. (OR Select location of Apple to skip step
          No 4.)
          4) Enter your Latitude and Longitude.
          5) Delete your app from simulator.
          6) Run your project again.

`

享受....

答案 2 :(得分:1)

蓝屏通常表示您当前的位置在海中,如上所述。 请检查您获得的当前位置是否正确。

通常,为了在MKMap中显示当前位置,我们编写map.showuserlocation = YES并在地图视图中显示蓝点,如果您必须更改当前位置的地图中的注释引脚,您可以查看注释方法和检查userlocation类,从而更改userlocation注释的引脚。

答案 3 :(得分:1)

它添加了您当前位置的注释...您放置了跨度20,20。这非常接近所以只需要一些时间来加载

    mapView1.showsUserLocation = YES;

    MKUserLocation *userLocation = mapView1.userLocation;
    MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(userLocation.location.coordinate, 200, 200);
    [mapView1 setRegion:region];

MKPointAnnotation *annotation = [[MKPointAnnotation alloc]init];
        annotation.coordinate = userLocation.location.coordinate;
        annotation.title = @"Title";
        annotation.subtitle = @"Sub Title";
        [mapView1 addAnnotation:annotation];

我希望它对你有用

答案 4 :(得分:1)

我认为在您添加注释时,用户位置仍然未知:

MKUserLocation *userLocation = mapView.userLocation;
// At that time maybe the userLocation hasn't been retrieved through the GPS yet
...
MKPointAnnotation *annotation = [[MKPointAnnotation alloc]init];
annotation.coordinate = userLocation.location.coordinate;
annotation.title = @"Here you r";
annotation.subtitle = @"Pondy";
[mapView addAnnotation:annotation];

在这种情况下,注释位置将为0,0,并且由于地图区域也基于mapView中的用户位置,因此您将在位于0,0位置的海中间结束。

为了监控mapView的用户位置的变化,然后只有当你确定mapView给出的userLocation是正确的时,才重新调整你的图钉和/或地图区域,只需实现此选择器的MKMapViewDelegate协议:

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

然后,在您的实现主体中,执行您之前执行的操作,但现在,您可以检查用户位置是否正确,并且只有在确定用户位置后才调整地图区域和注释没关系。