-1

在我的 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]; 

图片:

在此处输入图像描述
添加注释后:

代码:

 [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];

图片:

在此处输入图像描述

我需要注释出现在地图中。提前致谢。

4

5 回答 5

2

尝试更改 MKCoordinateRegionMakeWithDistance 的值。

于 2013-10-25T10:33:07.087 回答
1

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

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

于 2013-10-25T10:43:23.180 回答
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.

`

享受....

于 2013-10-25T10:42:08.737 回答
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];

我希望它对你有用

于 2013-10-25T11:54:09.473 回答
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 的用户位置的变化,然后只有在您确定userLocationmapView 给出的正确时才重新调整您的 pin 和/或地图区域,只需实现MKMapViewDelegate此选择器的协议:

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

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

于 2013-10-28T21:04:40.547 回答