инициализация mapkit с определенной широтой и долготой Iphone - PullRequest
2 голосов
/ 21 июля 2010

Я создаю приложение для iphone, которое должно брать широту и долготу из массива и должно находить и отображать карту с настроенными аннотациями / пинами. Я использовал mapkit вот как:

//MapViewController.h

#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>

@interface MapViewController : UIViewController  <MKMapViewDelegate> {
 IBOutlet MKMapView *mapView;
 MKPlacemark *mPlacemark;
}

@property (nonatomic, retain) IBOutlet MKMapView *mapView;
@end


//MapViewController.m

#import "MapViewController.h"
#import <MapKit/MapKit.h>

@implementation MapViewController
@synthesize mapView;


// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
    [super viewDidLoad];

    CLLocationCoordinate2D location = mapView.userLocation.coordinate;
    MKCoordinateRegion region;
    MKCoordinateSpan span;

    location.latitude  = 37.250556;
    location.longitude = -96.358333;

    span.latitudeDelta = 0.05;
    span.longitudeDelta = 0.05;

    region.span = span;
    region.center = location;

    [mapView setRegion:region animated:YES];
    [mapView regionThatFits:region];
}

 - (void)viewDidUnload {
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
    [mapView setNeedsDisplay];    
}


@end

Это не находит место для широты и долготы. Пожалуйста, помогите.

Ответы [ 2 ]

1 голос
/ 21 июля 2010

Я сделал пример проекта с вашим кодом, и он отлично работает - карта позиционируется в ожидаемом (кажется) регионе. Проверьте, инициализирован ли ваш mapView ivar (правильно ли установлены соединения в IB?)

Редактировать: В своем коде вы просто устанавливаете видимую область карты, но не добавляете к ней никаких примечаний (кроме автоматического отображения текущей позиции пользователя, которая всегда в Купертино, если вы тестируете на симуляторе). Чтобы прикрепить пин-код к вашей карте, вам нужно создать объект, подтверждающий протокол MKAnnotation и добавить его в mapView:

// Sample example just to show annotation
// in your program you will likely need to use custom annotation objects 
CLLocation* myLocation = [[CLLocation alloc] initWithLatitude:37.250556 longitude:-96.358333];
[mapView addAnnotation:myLocation];

Некоторые (не очень актуальные) комментарии к вашему коду:

  • Вам не нужно инициализировать переменную местоположения текущим местоположением, так как вы сразу же переписываете ее значения координат
  • Почему вы вызываете [mapView setNeedsDisplay]; в viewDidUnload методе? Я не уверен, что это может привести к серьезным проблемам, но вы должны использовать этот метод для очистки памяти (например, освобождения сохраненных розеток), а не для перерисовки вашего пользовательского интерфейса
0 голосов
/ 15 февраля 2011

Вы установили свою карту, чтобы следовать местоположению пользователя где-то еще? может быть, это значение по умолчанию отменяет ваше ручное перемещение карты в Канзас.

редактировать Не видел, это был июль прошлого года. Ну, может быть, вы могли бы поделиться своим решением с нами, если бы это не было проблемой

...