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

iOS:获取用户位置的最佳方式,ios,map,geolocation,Ios,Map,Geolocation,我有一个MKMapView类,我想在地图上显示由图像表示的用户位置。 因此,我阅读了本教程: 这家伙在视图上使用locationmanager,我需要在MKMapView上使用它 对我来说,最好的方法就是创建一个类来控制用户的位置? 我该怎么做 谢谢 首先,您希望位置显示在地图上: yourMapView.showsUserLocation=YES 然后,您需要处理用于显示用户位置的annotationview的委托方法: - (MKAnnotationView *)mapView:(MKMap

我有一个MKMapView类,我想在地图上显示由图像表示的用户位置。 因此,我阅读了本教程:

这家伙在视图上使用locationmanager,我需要在MKMapView上使用它

对我来说,最好的方法就是创建一个类来控制用户的位置? 我该怎么做


谢谢

首先,您希望位置显示在地图上:

yourMapView.showsUserLocation=YES

然后,您需要处理用于显示用户位置的annotationview的委托方法:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id < MKAnnotation >)annotation {
    if ([annotation isKindOfClass:[MKUserLocation class]]) {
        // Create a custom MKAnnotationView here that will display your image.
    }
}
-(MKAnnotationView*)地图视图:(MKMapView*)地图视图用于注释:(id)注释{
if([annotation isKindOfClass:[MKUserLocation类]]){
//在此处创建自定义MKAnnotationView,以显示您的图像。
}
}

确保在
MKMapView
上正确设置
委托。

为此,您需要实现
MKAnnotation
&
MKMapView
委托

实现此方法以将默认pin更改为自定义图像

- (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;    
}
-(MKAnnotationView*)地图视图:(MKMapView*)地图视图注释:(id)注释
{
if([annotation isKindOfClass:[MKUserLocation类]])
{
//在此处创建自定义MKAnnotationView,以显示您的图像。
//用户当前位置
}
静态NSString*标识符=@“MyLocation”;
if([annotation isKindOfClass:[MyLocation class]])
{
MKPinAnnotationView*annotationView=(MKPinAnnotationView*)[\u地图视图排队可重用AnnotationViewWithIdentifier:identifier];
如果(注释视图==nil)
{
annotationView=[[MKPinAnnotationView alloc]initWithAnnotation:annotation重用标识符:标识符];
}
其他的
{
annotationView.annotation=注释;
}
annotationView.enabled=是;
annotationView.canShowCallout=是;
annotationView.image=[UIImage ImageName:@“yourImage.png”];
返回注释视图;
}
返回零;
}
请参考这个