iPhone MapKit - Update annotaties coördinaten en kaart

stemmen
2

Ik gebruik deze tutorial voor de integratie van MapKit dat mijn aanvraag: 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];
}

en

- (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;

}

Dus de pinnen zal zetten op de kaart willekeurig. In mijn aanvraag, zal de coördinaten te wijzigen. Hoe kan ik de coördinaten van de annotaties te veranderen, zodat ze worden bijgewerkt op de kaart?

Weet iemand?

De vraag is gesteld op 09/12/2009 om 14:05
bron van user
In andere talen...                            


3 antwoorden

stemmen
2

Op iPhone SDK 3.x moet je de pin annotaties verwijderen en het opnieuw. Dat is niet erg aardig als je veel aantekeningen van een kaart.

Ik probeer het beter te maken, dus ik ony weergave / renew mijn pin aantekeningen die op het scherm. Dus als een gebruiker in te zoomen naar New York, zal er geen pin aantekeningen in San Francisco of anderen dan de gebruiker niet kan zien. Dus de prestaties veel beter zal zijn.

Misschien in de toekomst dit mogelijk zou zijn. Ik hoop het :-)

antwoordde op 08/02/2010 om 13:25
bron van user

stemmen
1

Sinds ik ben bezig met annotaties op het moment dat ik gewoon een snelle test. Je krijgt een compiler waarschuwing, dus het kan niet worden ondersteund. Maar het werkt.

Maak een aangepaste MKAnnotation klasse, dus u de eigenschap coördinaat kunt instellen beschrijfbaar te zijn:

@property (nonatomic, readwrite) CLLocationCoordinate2D coordinate;

Dan op welk evenement of interval u wilt, wijzigt u de coördinaten met behulp van iets als dit:

    CLLocation *loc=[[CLLocation alloc] initWithLatitude:55.0 longitude:17.0];
annotation.coordinate=loc.coordinate;
[loc release];
antwoordde op 18/05/2010 om 13:01
bron van user

stemmen
1

Dat tutorial is alleen voor het krijgen van een kaart te laten zien, niets anders. Je gaat naar een grotere les nodig. Ik vond dit een nuttig:

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

Waarschijnlijk wat je hoeft te doen is aan lijn door alle aantekeningen op de kaart, het verwijderen van hen, dan lus door uw data-array, de annotaties weer opnieuw toe te voegen. Je zou slimmer over en loop zijn via de data-array, te controleren of er al een speld met dezelfde lengte / breedte op de kaart, maar op die manier wordt ingewikkelder.

antwoordde op 10/12/2009 om 04:02
bron van user

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