iPhone MapKit - adnotări coordonate de actualizare și hartă

voturi
2

Eu folosesc acest tutorial pentru integrarea MapKit la cererea mea: 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];
}

și

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

}

Deci, pinii va stabili pe hartă aleatoriu. În cererea mea, coordonatele se vor schimba. Cum pot schimba coordonatele adnotări, astfel încât acestea vor fi actualizate pe hartă?

Stie cineva?

Întrebat 09/12/2009 la 14:05
sursa de către utilizator
În alte limbi...                            


3 răspunsuri

voturi
2

La iPhone SDK 3.x trebuie să eliminați adnotări PIN și setați-o din nou. Acest lucru nu este foarte frumos, dacă aveți multe adnotări o hartă.

Încerc să fac mai bine, așa că am ony afișare / reînnoiți adnotări PIN, care sunt pe ecran. Deci, dacă un utilizator mări la New York, nu vor fi adnotările PIN în San Francisco sau altele decât utilizatorul nu poate vedea. Deci, performanța va fi mult mai bine.

Poate că, în viitor, acest lucru ar fi posibil. Sper :-)

Publicat 08/02/2010 la 13:25
sursa de către utilizator

voturi
1

Din moment ce fac adnotări în acest moment am făcut un test rapid. Tu faci un avertisment compilator, astfel încât este posibil să nu fie acceptată. Dar funcționează.

Asigurați-o clasă personalizată MKAnnotation astfel încât să puteți seta proprietatea de coordonate să fie inscriptibil:

@property (nonatomic, readwrite) CLLocationCoordinate2D coordinate;

Apoi, la orice eveniment sau intervalul pe care doriți, modificați folosind coordonatei ceva de genul:

    CLLocation *loc=[[CLLocation alloc] initWithLatitude:55.0 longitude:17.0];
annotation.coordinate=loc.coordinate;
[loc release];
Publicat 18/05/2010 la 13:01
sursa de către utilizator

voturi
1

Acel tutorial este doar pentru a obține o vizualizare hartă pentru a arăta, nimic altceva. Vei avea nevoie de un tutorial mai mare. Am găsit asta folositoare:

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

Probabil ceea ce va trebui să faceți este să bucla prin toate adnotările de pe hartă, scoate-le, apoi bucla prin matrice de date, adăugând adnotările înapoi din nou. Ai putea fi mai inteligent despre ea și bucla prin matrice de date, verificând dacă există deja un știft cu aceeași latitudine / longitudine pe hartă, dar în acest fel devine mai complicat.

Publicat 10/12/2009 la 04:02
sursa de către utilizator

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