2

在我的 iphone 应用程序中,我使用 MKMapview 来显示位置,这是第一次用蓝点显示当前位置。但是如果在地图中拖动并单击当前位置按钮,它不会显示蓝点(但我能够返回当前位置区域)

-(IBAction)currntLctnClick:(id)sender{
  [map setCenterCoordinate:map.userLocation.location.coordinate animated:YES];
}    
4

7 回答 7

4

考虑到您说您可以在首次加载时看到用户位置,因此可以安全地假设您已setShowsUserLocation:设置为 YES。

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation在你的视图控制器中实现了吗?

如果是这样,请务必避免为内置的用户位置标记提供注释视图。

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation
{
    //check annotation is not user location
    if([annotation isEqual:[mapView userLocation]])
    {
        //bail
        return nil;
    }

    static NSString *annotationViewReuseIdentifer = @"map_view_annotation";

    //dequeue annotation view
    MKPinAnnotationView *annotationView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:annotationViewReuseIdentifer];

    if(!annotationView)
    {
        annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:annotationViewReuseIdentifer];
    }

    //set annotation view properties
    [annotationView setAnnotation:annotation];

    return annotationView;
}
于 2013-06-20T09:04:49.960 回答
3

你实现了这个viewForAnnotation功能吗?您是否正在检查您没有为 MKUserLocation 绘制(或未能绘制)不同类型的引脚?

于 2013-02-20T19:24:10.320 回答
2

用蓝点显示您的当前位置

- (void)viewDidLoad
{
    yourMapView.showsUserLocation=YES;
}

单击按钮导航到您当前的位置

-(IBAction)currntLctnClick:(id)sender
{
    MKCoordinateRegion location = MKCoordinateRegionMakeWithDistance(yourMapView.userLocation.coordinate, 10000.0, 10000.0);

    [yourMapView setRegion:location animated:YES];
}

编辑
或者,如果您的蓝点仍然不可见,那么只需MapView从 xib 中删除并再次拖放它。

于 2013-02-20T14:12:56.133 回答
1

对于所有通过搜索 GoogleMaps 解决方案来到这里的人 - 这是您需要设置为 true 的属性。

斯威夫特 3.0

self.mapView.isMyLocationEnabled=true
于 2017-03-13T12:47:54.580 回答
0
 [map setShowsUserLocation:YES];  
于 2013-02-20T12:35:05.893 回答
0

只需在 viewForAnnotation 方法中迭代时检查注释是否为MKUserLocation,如果为真则返回 nil。

它是这样工作的,因为 MKUserLocation 也是 mapView.annotations 数组的一部分,您只需要通过它而不做任何修改。

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {

guard !(annotation is MKUserLocation)  else { return nil }

// your viewForAnnotation code...                                              
}
于 2019-02-06T12:37:18.997 回答
0

只需添加,如果您使用的是 Interface Builder,请选择 Map View 并在 Attributes 部分中,确保User Location选中:

地图视图属性

于 2020-04-06T13:52:28.037 回答