Подтвердить что ты не робот

Как показать текущее местоположение на MKMapView

Я использую MKMapView в своем приложении. Мне нужно показать текущее местоположение на симуляторе.
Является ли это возможным. для отображения текущего местоположения на симуляторе.

4b9b3361

Ответ 1

В симуляторе текущее местоположение пользователя всегда находится в Купертино, Калифорния.

Если вы используете интерфейс Builder для добавления своего вида карты, просто установите флажок "Показывает местоположение пользователя" в Инспекторе атрибутов для отображения карты. (Выберите вид карты и введите command-1, чтобы отобразить инспектор атрибутов.)

Если вы программно добавляете или управляете программным видом карты, установите для свойства showsUserLocation вид на карту YES.


Обновление. Оказывается, это возможно, просто не используя встроенную функцию отображения карты, и она не всегда работает.

Последние версии SDK (которые должны запускаться на Snow Leopard) могут получить местоположение машины, на которой работает симулятор, с использованием CLLocationManager. Затем вы можете использовать это местоположение для создания аннотации для отображения на карте. Он не будет вести себя как встроенный "индикатор местоположения пользователя" (по крайней мере, не без какой-либо работы), но он покажет текущее местоположение пользователя.

Подробнее о том, когда этот метод не будет работать, см. этот пост.

См. раздел "Связанный образец кода" в документации CLLocationManager для примера кода, который использует CLLocationManager и CLLocationManagerDelegate, а затем отображает местоположение пользователя на вид карты.

Ответ 2

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

Это покажет текущее местоположение в MkMapview.

Если вы используете Interface Builder, в Инспекторе атрибутов мы имеем опцию Behaviour, у которой есть опция Show User Location, при проверке того, что опция также будет делать то же самое.

Если вы не можете видеть в симуляторе,

  • Откройте приложение в симуляторе.
  • В строке меню выберите Debug → Location → (Если выбрана опция "None", измените ее на "Custom 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
}

Надеюсь, что этот ответ может вам помочь.

Ответ 3

Симулятор не будет показывать текущее местоположение пользователя независимо от того, является ли это iOS 6, 6.1 или iOS 7. Чтобы смоделировать местоположение, вы можете увидеть здесь. Если вы хотите показать текущее местоположение пользователя, запустите приложение на устройстве или измените настройку симулятора -

из меню симулятора выберите Debug > Location > Custom Location....