我在我的应用程序上使用MKMapView。我需要在模拟器上显示当前位置 可能吗。在模拟器上显示当前位置。
答案 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
,在检查该选项时也会这样做。
如果您无法在模拟器中看到,
使用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;自定义位置....