MKOverlay обновление перепрошивки - PullRequest
4 голосов
/ 28 октября 2011

В своем приложении я использую MKPolyline для отслеживания пути пользователя.Иногда (и не все время, что я не понимаю), когда новый сегмент линии добавляется на карту, вся линия мигает.Иногда это не так.Это код, используемый для добавления строк:

CLLocationCoordinate2D coords[2];

coords[0] = CLLocationCoordinate2DMake(newLocation.coordinate.latitude, newLocation.coordinate.longitude);

coords[1] = CLLocationCoordinate2DMake(oldLocation.coordinate.latitude, oldLocation.coordinate.longitude);

MKPolyline* line = [MKPolyline polylineWithCoordinates:coords count:2];

[mapView addOverlay:line];

Я что-то упустил?

Редактировать: Обычно это происходит после возврата приложения из фона.Я не совсем уверен, почему, потому что я только добавляю оверлей, а не изменяю весь массив mapView.overlays.... правильно?

Ответы [ 2 ]

1 голос
/ 08 декабря 2011

Это может не относиться, но Apple действительно заявляет в разделе Управление объектами наложения карты в Руководстве по программированию осведомленности о местоположении ...

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

0 голосов
/ 08 декабря 2011

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

Попробуйте одно из следующих действий:

[mapView setNeedsDisplay];

или

if ([[mapView overlays] count] > 0){
    [[[mapView overlays] lastObject] setNeedsDisplay];
}

Поместите их либо в метод viewWillAppear, либо в метод applicationWillEnterForeground в AppDelegate.m.

...