Примечания MKA делаются успешно, однако иногда они не отображаются на MKMapView
Я работаю над приложением iPhone с использованием 3.1.3 SDK, мое приложение находит текущее местоположение пользователей, отображает его в MKMapView, а затем находит близлежащие местоположения и отображает их как MKAnnotations. Мой код работает, но иногда соседние аннотации не отображаются на карте. Они все еще создаются, поскольку я вижу правильные данные в консоли (из NSLog, который запускается сразу после создания аннотаций).
Когда это терпит неудачу, совершенно случайно, это может быть 5-й раз, когда я нажимаю "Build and Run" за день, или 500-й, который, кажется, не имеет какого-либо паттерна и не выдает никаких типов ошибок, это просто не добавляет аннотации к MapView.
Этот метод вызывается для каждого соседнего местоположения, чтобы добавить MKAnnotation.
- (void)addPinsWithLocation:(NSDictionary *)spot
{
CLLocationCoordinate2D location;
location.longitude = [[spot objectForKey:@"spot_longitude"] doubleValue];
location.latitude = [[spot objectForKey:@"spot_latitude"] doubleValue];
PlaceMarks *placemark = [[PlaceMarks alloc] initWithCoordinate:location title:[spot objectForKey:@"spot_name"] subtitle:@""];
NSLog(@"Adding Pin for Location: '%@' at %f, %f", [spot objectForKey:@"spot_name"], location.latitude, location.longitude);
[mapView addAnnotation:placemark];
}
Любые идеи о том, как заставить MKAnnotations всегда показывать?
1 ответ
В настоящее время я делаю приложение, которое хочет показать все видимые аннотации - я бы попробовал установить делегат представления карты, а затем реализовать следующий метод:
- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views
Здесь вы можете выяснить, какие аннотации были добавлены и, например, увеличить карту, чтобы показать их - этот блог дает вам некоторый исходный код, чтобы сделать это масштабирование для подгонки:
http://codisllc.com/blog/zoom-mkmapview-to-fit-annotations/
Вот несколько полезных советов по улучшению информации о вашем местоположении:
Оптимизация CLLocationManager/CoreLocation для более быстрого извлечения точек данных на iPhone