iPhone MapKit - обновление аннотаций координаты и карты

голоса
2

Я использую этот учебник для интеграции MapKit в моем приложении: http://iphonebcit.wordpress.com/iphone-map-kit-tutorial/

CLLocationCoordinate2D coordinate;
coordinate.latitude = 49.2802;
coordinate.longitude = -123.1182;

NSUInteger count = 1;
for(int i = 0; i < 10; i++) {
    CGFloat latDelta = rand()*.035/RAND_MAX - .02;
    CGFloat longDelta = rand()*.03/RAND_MAX - .015;

    CLLocationCoordinate2D newCoord = {coordinate.latitude+latDelta, coordinate.longitude+longDelta};
    MapDemoAnnotation* annotation = [[MapDemoAnnotation alloc] initWithCoordinate:newCoord andID:count++];
    [mapView addAnnotation:annotation];
    [annotation release];
}

а также

- (MKAnnotationView *)mapView:(MKMapView *)mapViewLocal viewForAnnotation:(id <MKAnnotation>)annotation {
MKPinAnnotationView *pinView = (MKPinAnnotationView*)[mapViewLocal dequeueReusableAnnotationViewWithIdentifier:@Pin];
if(pinView == nil) {
    pinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@Pin];
    pinView.pinColor = MKPinAnnotationColorPurple;
    pinView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
    pinView.animatesDrop = YES;
    pinView.canShowCallout = YES;
} else {
    pinView.annotation = annotation;
}
return pinView;

}

Таким образом, контакты будут установлены на карте в случайном порядке. В моем приложении, координата изменится. Как я могу изменить координаты аннотаций, так что они будут обновлены на карте?

Кто-нибудь знает?

Задан 09/12/2009 в 14:05
источник пользователем
На других языках...                            


3 ответов

голоса
2

В iPhone SDK 3.x вы должны удалить булавки аннотаций и установить его снова. Это не очень хорошо, если у вас есть много аннотаций карты.

Я стараюсь, чтобы сделать его лучше, так что я ONY дисплея / обновить свой ПИН-код аннотации, которые на экране. Таким образом, если пользователь приближать в Нью-Йорке, не будет пин аннотаций в Сан-Франциско или другие, чем пользователь не может видеть. Таким образом, производительность будет намного лучше.

Возможно, в будущем это будет возможно. Я надеюсь, что это так :-)

Ответил 08/02/2010 в 13:25
источник пользователем

голоса
1

Так как я делаю аннотации на данный момент я просто сделал быстрый тест. Вы получаете предупреждение компилятора, поэтому он не может быть поддержан. Но это работает.

Сделайте пользовательский класс MKAnnotation, так что вы можете установить свойство координат будет доступно для записи:

@property (nonatomic, readwrite) CLLocationCoordinate2D coordinate;

Затем на любом мероприятии или интервал, который Вы хотите, изменить координату, используя что-то вроде этого:

    CLLocation *loc=[[CLLocation alloc] initWithLatitude:55.0 longitude:17.0];
annotation.coordinate=loc.coordinate;
[loc release];
Ответил 18/05/2010 в 13:01
источник пользователем

голоса
1

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

http://blog.objectgraph.com/index.php/2009/04/02/iphone-sdk-30-playing-with-map-kit/

Возможно, что вам нужно сделать, это перебрать все аннотации на карте, удаляя их, а затем цикл через массив данных, добавление аннотаций обратно. Вы могли бы быть более умным об этом и перебрать массив данных, проверяя, есть ли уже штифт с той же широты / долготы на карте, но это путь становится более сложным.

Ответил 10/12/2009 в 04:02
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more