MapView未显示蓝点当前位置

时间:2013-02-20 12:28:12

标签: iphone mkmapview mapkit

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

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

7 个答案:

答案 0 :(得分: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];
}

修改
或者,如果仍然看不到您的蓝点,则只需从xib中删除MapView并再次拖放即可。

答案 1 :(得分:2)

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

答案 2 :(得分:2)

考虑到您说您可以在首次加载时看到用户位置,可以假设您已将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;
}

答案 3 :(得分:1)

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

Swift 3.0

self.mapView.isMyLocationEnabled=true

答案 4 :(得分:0)

 [map setShowsUserLocation:YES];  

答案 5 :(得分:0)

只需在viewForAnnotation方法中进行迭代时检查批注是否为 MKUserLocation 即可,如果为true,则返回nil。

之所以这样工作,是因为MKUserLocation也是mapView.annotations数组的一部分,您只需要将其传递而无需进行任何修改。

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

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

// your viewForAnnotation code...                                              
}

答案 6 :(得分:0)

要添加的话,如果您使用的是Interface Builder,请选择“地图视图”,然后在“属性”部分中,确保选中User Location

Map View Attributes