iPhone MapKit - oppdatere merknader koordinater og kart

stemmer
2

Jeg bruker denne opplæringen for å integrere MapKit til min søknad: 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];
}

og

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

}

Så pinnene vil sette på kartet tilfeldig. I min søknad, vil koordinatene endres. Hvordan kan jeg endre koordinatene til merknader, slik at de vil bli oppdatert på kartet?

Er det noen som vet?

Publisert på 09/12/2009 klokken 13:05
kilden bruker
På andre språk...                            


3 svar

stemmer
2

På iPhone SDK 3.x må du fjerne pinne merknader og sette den igjen. Det er ikke veldig hyggelig hvis du har mange merknader en kartet.

Jeg prøver å gjøre det bedre, så jeg ony skjerm / fornye mine pin merknader som er på skjermen. Så hvis en bruker zoome inn til New York, vil det ikke være pin kommentarer i San Francisco eller andre enn brukeren kan ikke se. Slik at ytelsen vil være mye bedre.

Kanskje i fremtiden vil dette være mulig. Jeg håper det :-)

Svarte 08/02/2010 kl. 12:25
kilden bruker

stemmer
1

Siden jeg gjør merknader i det øyeblikket jeg bare gjort en rask test. Du får en kompilator advarsel, så det kan ikke bli støttet. Men det fungerer.

Lag en tilpasset MKAnnotation klasse slik at du kan sette koordinere eiendommen for å være skrivbar:

@property (nonatomic, readwrite) CLLocationCoordinate2D coordinate;

Så uansett hvilken hendelse eller intervall du ønsker, endre koordinatsystemet bruke noe sånt som dette:

    CLLocation *loc=[[CLLocation alloc] initWithLatitude:55.0 longitude:17.0];
annotation.coordinate=loc.coordinate;
[loc release];
Svarte 18/05/2010 kl. 12:01
kilden bruker

stemmer
1

At opplæringen er bare for å få et kartutsnitt vise, ingenting annet. Du kommer til å trenge en større opplæringen. Jeg fant dette nyttig:

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

Sannsynligvis hva du trenger å gjøre er å sløyfe gjennom alle kommentarene på kartet, fjerne dem, deretter sløyfe gjennom dataene array, legger merknadene tilbake igjen. Du kan være mer smart om det og sløyfe gjennom data array, sjekke om det allerede finnes en pin med samme breddegrad / lengdegrad på kartet, men på den måten blir mer komplisert.

Svarte 10/12/2009 kl. 03:02
kilden bruker

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