如何在MKMapView上显示当前位置

kir*_*mar 12 iphone

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

Kri*_*kel 18

在模拟器中,用户的当前位置始终位于加利福尼亚州库比蒂诺.

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

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


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

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

有关技术何时无效的详细信息,请参阅此文章.

有关使用CLLocationManager和CLLocationManagerDelegate的示例代码,请参阅CLLocationManager文档的"相关示例代码"部分,然后在地图视图中显示用户的位置.


Asw*_*ose 13

 self.mapView.delegate =  self;
 self.mapView.showsUserLocation = YES;
Run Code Online (Sandbox Code Playgroud)

这将显示当前位置MkMapview.

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

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

  1. 在模拟器中打开应用程序.
  2. 从菜单栏中选择调试 - >位置 - >(如果选择"无"选项,将其更改为"自定义位置")并设置位置.

随着CLLocationManager我们也可以获得当前的位置,导入Corelocation框架项目

.h档案中

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

.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];
    }
Run Code Online (Sandbox Code Playgroud)

委托功能:

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

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