如何在MKMapView上显示当前位置

时间:2010-10-20 04:12:20

标签: iphone

我在我的应用程序上使用MKMapView。我需要在模拟器上显示当前位置 可能吗。在模拟器上显示当前位置。

3 个答案:

答案 0 :(得分:18)

在模拟器中,用户的当前位置始终位于加州库比蒂诺。

如果您使用Interface Builder添加地图视图,只需在地图视图的“属性”检查器中选中“显示用户位置”复选框。 (选择地图视图并键入command-1以显示属性检查器。)

如果您是以编程方式添加或操作地图视图,请将地图视图的showsUserLocation属性设置为YES


更新:事实证明这是可能的,只是没有使用内置的地图视图功能,并且它并不总是有效。

最新版本的SDK(必须在Snow Leopard上运行)可以使用CLLocationManager获取运行模拟器的机器的位置。然后,您可以使用此位置创建要在地图视图上显示的注释。它不会像内置的“用户位置指示器”(至少没有一些工作),但它会显示用户的当前位置。

有关此技术无效的详细信息,请参阅this post

有关使用CLLocationManager和CLLocationManagerDelegate的示例代码,请参阅CLLocationManager documentation的“相关示例代码”部分,然后在地图视图中显示用户的位置。

答案 1 :(得分:13)

 self.mapView.delegate =  self;
 self.mapView.showsUserLocation = YES;

这将显示MkMapview中的当前位置。

如果您正在使用Interface Builder,在Attributes Inspector中,我们有一个选项Behaviour,它有一个选项Show User Location,在检查该选项时也会这样做。

如果您无法在模拟器中看到,

  1. 在模拟器中打开应用程序。
  2. 从菜单栏中选择Debug - >位置 - > (如果选择“无”选项,请将其更改为“自定义位置”)并设置位置。
  3. 使用CLLocationManager我们也可以获取当前位置, 将Corelocation FrameWork导入项目

    .h档案

    #import <CoreLocation/CoreLocation.h>
    @property (nonatomic, strong) CLLocationManager *locationManager;
    @property (nonatomic, strong) CLLocation* currentLocation;
    

    .m档案

    if ([CLLocationManager locationServicesEnabled] )
        {
            if (self.locationManager == nil )
            {
                self.locationManager = [[CLLocationManager alloc] init];
                self.locationManager.delegate = self;
                self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
                self.locationManager.distanceFilter = kDistanceFilter; //kCLDistanceFilterNone// kDistanceFilter;
            }
    
            [self.locationManager startUpdatingLocation];
        }
    

    代表职能:

    -(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
    {
        self.currentLocation = [locations lastObject];
       // here we get the current location
    }
    

    希望这个答案可以帮到你。

答案 2 :(得分:0)

模拟器不会显示用户当前位置,无论是iOS 6,6.1还是iOS 7.要模拟位置,您可以看到here。如果您想显示用户当前位置,请在设备中运行您的应用程序或更改模拟器设置 -

从模拟器的菜单中选择Debug&gt;位置&gt;自定义位置....