iOS:获得位置用户的最佳方式

时间:2012-11-14 00:59:31

标签: ios map geolocation

我有一个MKMapView类,我想在地图上显示图像所代表的用户位置。 所以,我读了这个教程:http://www.switchonthecode.com/tutorials/getting-your-location-in-an-iphone-application

这个人在视图上使用locationmanager,我需要在MKMapView上使用它。

对我来说,最好的方法是创建一个只是为了控制用户位置的类? 我怎么能这样做?

谢谢!

2 个答案:

答案 0 :(得分:0)

首先,您希望该地点显示在地图上:

yourMapView.showsUserLocation = YES;

然后,您需要处理委托方法以显示用户位置的注释视图:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id < MKAnnotation >)annotation {
    if ([annotation isKindOfClass:[MKUserLocation class]]) {
        // Create a custom MKAnnotationView here that will display your image.
    }
}

确保正确设置delegate上的MKMapView

答案 1 :(得分:0)

为此,您需要实施MKAnnotation&amp; MKMapView代表。

实施此方法以将默认引脚更改为自定义图像。

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
  {
    if ([annotation isKindOfClass:[MKUserLocation class]])
    {
        // Create a custom MKAnnotationView here that will display your image.
        //user current location
    }

    static NSString *identifier = @"MyLocation";   
    if ([annotation isKindOfClass:[MyLocation class]])
    {

        MKPinAnnotationView *annotationView = (MKPinAnnotationView *) [_mapView dequeueReusableAnnotationViewWithIdentifier:identifier];
        if (annotationView == nil)
        {
            annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier];
        }
        else
        {
            annotationView.annotation = annotation;
        }

        annotationView.enabled = YES;
        annotationView.canShowCallout = YES;
        annotationView.image=[UIImage imageNamed:@"yourImage.png"];

        return annotationView;
    }

    return nil;    
}

请参阅此tutorial