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

StackOverflow https://stackoverflow.com/questions/1873755

  •  18-09-2019
  •  | 
  •  

Вопрос

Я использую этот урок для интеграции 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;

}

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

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

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

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

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

@property (nonatomic, readwrite) CLLocationCoordinate2D coordinate;

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

    CLLocation *loc=[[CLLocation alloc] initWithLatitude:55.0 longitude:17.0];
annotation.coordinate=loc.coordinate;
[loc release];
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top